javafx
Botón
Buscar..
Añadiendo un oyente de acción
Los botones activan los eventos de acción cuando se activan (p. Ej., Se hace clic en una combinación de teclas para el botón, ...).
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
Si está utilizando Java 8+, puede usar lambdas para escuchas de acción.
button.setOnAction((ActionEvent a) -> System.out.println("Hello, World!"));
// or
button.setOnAction(a -> System.out.println("Hello, World!"));
Añadiendo un gráfico a un botón.
Los botones pueden tener un gráfico. graphic
puede ser cualquier nodo JavaFX, como un ProgressBar
button.setGraphic(new ProgressBar(-1));
Un ImageView
button.setGraphic(new ImageView("images/icon.png"));
O incluso otro botón
button.setGraphic(new Button("Nested button"));
Crear un botón
La creación de un Button
es simple:
Button sampleButton = new Button();
Esto creará un nuevo Button
sin ningún texto o gráfico dentro.
Si desea crear un Button
con un texto, simplemente use el constructor que toma una String
como parámetro (que establece la textProperty
de texto del Button
):
Button sampleButton = new Button("Click Me!");
Si desea crear un Button
con un gráfico en el interior o en cualquier otro Node
, use este constructor:
Button sampleButton = new Button("I have an icon", new ImageView(new Image("icon.png")));
Predeterminado y botones de cancelación
Button
API de Button
proporciona una manera fácil de asignar atajos de teclado comunes a los botones sin la necesidad de acceder a la lista de aceleradores asignados a la Scene
o escuchar explícitamente los eventos clave. A saber, se proporcionan dos métodos de conveniencia: setDefaultButton
y setCancelButton
:
Si configura
setDefaultButton
entrue
, elButton
seKeyCode.ENTER
cada vez que reciba un eventoKeyCode.ENTER
.Establecer
setCancelButton
entrue
hará que elButton
dispare cada vez que reciba un eventoKeyCode.ESCAPE
.
El siguiente ejemplo crea una Scene
con dos botones que se activan cuando se presionan las teclas de entrada o de escape, independientemente de si están enfocadas o no.
FlowPane root = new FlowPane();
Button okButton = new Button("OK");
okButton.setDefaultButton(true);
okButton.setOnAction(e -> {
System.out.println("OK clicked.");
});
Button cancelButton = new Button("Cancel");
cancelButton.setCancelButton(true);
cancelButton.setOnAction(e -> {
System.out.println("Cancel clicked.");
});
root.getChildren().addAll(okButton, cancelButton);
Scene scene = new Scene(root);
El código anterior no funcionará si estas KeyEvents
son consumidos por cualquier padre Node
:
scene.setOnKeyPressed(e -> {
e.consume();
});