Ricerca…


Aggiunta di un listener di azioni

I pulsanti attivano gli eventi di azione quando vengono attivati ​​(ad es. Si fa clic, una combinazione di tasti per il pulsante viene premuto, ...).

button.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
        System.out.println("Hello World!");
    }
});

Se si utilizza Java 8+, è possibile utilizzare lambdas per i listener di azioni.

button.setOnAction((ActionEvent a) -> System.out.println("Hello, World!"));
// or
button.setOnAction(a -> System.out.println("Hello, World!"));

Aggiunta di un elemento grafico a un pulsante

I pulsanti possono avere un grafico. graphic può essere qualsiasi nodo JavaFX, come un ProgressBar

button.setGraphic(new ProgressBar(-1));

Un ImageView

button.setGraphic(new ImageView("images/icon.png"));

O anche un altro pulsante

button.setGraphic(new Button("Nested button"));

Crea un pulsante

La creazione di un Button è semplice:

Button sampleButton = new Button();

Questo creerà un nuovo Button senza testo o grafica all'interno.

Se vuoi creare un Button con un testo, usa semplicemente il costruttore che accetta un parametro String come parametro (che imposta la proprietà textProperty del Button ):

Button sampleButton = new Button("Click Me!");

Se si desidera creare un Button con un elemento grafico all'interno o qualsiasi altro Node , utilizzare questo costruttore:

Button sampleButton = new Button("I have an icon", new ImageView(new Image("icon.png")));

Pulsanti predefiniti e Annulla

Button API Button offre un modo semplice per assegnare scorciatoie da tastiera comuni ai pulsanti senza la necessità di accedere all'elenco degli acceleratori assegnato a Scene o di ascoltare esplicitamente gli eventi dei tasti. Vale a dire, sono disponibili due metodi di convenienza: setDefaultButton e setCancelButton :

  • L'impostazione di setDefaultButton su true farà sì che il Button si KeyCode.ENTER ogni volta che riceve un evento KeyCode.ENTER .

  • Se si setCancelButton su true , il Button viene KeyCode.ESCAPE ogni volta che riceve un evento KeyCode.ESCAPE .

L'esempio seguente crea una Scene con due pulsanti che vengono attivati ​​quando vengono premuti i tasti di invio o di escape, indipendentemente dal fatto che siano focalizzati o meno.

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);

Il codice sopra non funzionerà se questi KeyEvents sono consumati da qualsiasi Node genitore:

scene.setOnKeyPressed(e -> {
    e.consume();
});


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow