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 en true , el Button se KeyCode.ENTER cada vez que reciba un evento KeyCode.ENTER .

  • Establecer setCancelButton en true hará que el Button dispare cada vez que reciba un evento KeyCode.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();
});


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow