Esta página fue traducida automáticamente del portugués y puede contener errores. La versión en portugués es la canónica.
Cómo pedir confirmación antes de una acción destructiva
Propósito. Antes de eliminar/descartar algo, muestra un Alert con dos botones (ej.: “Cancelar” y “Eliminar”). Ejecuta la acción destructiva solo en el callback del botón de confirmación.
APIs usadas
new Alert(String title, String message, String... buttonTexts)— crea el diálogo.Alertes unaWindow; los botones siguen elSkinactivo.Alert.buttonAction(int index, Component.Action action)— define la acción de un botón (índice 0-based). Sin acción, el botón solo cierra (hide()).Alert.show()— apila el diálogo (push modal).WindowStyle.fadeBackground(int alpha)— oscurece las ventanas de abajo (0–255). Obtén el style mediantegetStyle().Hint.show(String message, int delayMs)— muestra un toast breve de feedback.
Ejemplo completo (copiar, pegar y ejecutar)
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
/** Pantalla principal ejecutable: un botón dispara el Alert de confirmación. */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
add(new Label("Pedido #1234"));
add(new Button("Excluir pedido").onAction(e -> confirmarExclusao()));
}
private void confirmarExclusao()
{
Alert alert = new Alert("Excluir pedido", "Esta ação não pode ser desfeita.", "Cancelar", "Excluir");
// Oscurece el fondo (0..255). getStyle() del Alert es un WindowStyle.
((WindowStyle) alert.getStyle()).fadeBackground(150);
// Índice 0 = "Cancelar": sin buttonAction, el botón ya cierra el Alert por sí solo.
// Índice 1 = "Excluir": acción destructiva + feedback.
alert.buttonAction(1, e ->
{
excluirPedido(); // acción destructiva
alert.hide(); // cierra el diálogo
Hint.show("Pedido excluído", 1500);
});
alert.show();
}
private void excluirPedido()
{
// ... tu lógica de eliminación ...
}
}
El fragmento de abajo muestra solo el núcleo. Para ejecutarlo, colócalo en el esqueleto
MainWindowde arriba.
Fragmento mínimo
// verificado en la fuente: Alert.buttonAction(idx, Action); WindowStyle.fadeBackground(int 0-255); Hint.show(msg, ms)
Alert alert = new Alert("Excluir pedido", "Esta ação não pode ser desfeita.", "Cancelar", "Excluir");
// Oscurece el fondo (0..255). getStyle() del Alert es un WindowStyle.
((WindowStyle) alert.getStyle()).fadeBackground(150);
// Índice 0 = "Cancelar": sin buttonAction, el botón ya cierra el Alert por sí solo.
// Índice 1 = "Excluir": acción destructiva + feedback.
alert.buttonAction(1, e ->
{
excluirPedido(); // acción destructiva
alert.hide(); // cierra el diálogo
Hint.show("Pedido excluído", 1500);
});
alert.show();
Detalles que evitan sorpresas:
- Si no defines
buttonActionpara un botón, el Alert le asociaonAction(e -> hide())— el botón cierra el diálogo sin hacer nada más. Por eso “Cancelar” normalmente prescinde debuttonAction. - Coloca la acción destructiva siempre en el botón de confirmación (aquí, índice 1), nunca como comportamiento por defecto.
fadeBackgroundrecibe alpha 0–255 (no 0xAARRGGBB). 150 da un oscurecimiento perceptible sin apagar el contenido.
Profundiza
- Diálogos y modales
- Receta hermana: Abrir y cerrar una pantalla
¿Te resultó útil esta página?¡Gracias por tu opinión!