javafx
Pulsante
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
sutrue
farà sì che ilButton
siKeyCode.ENTER
ogni volta che riceve un eventoKeyCode.ENTER
.Se si
setCancelButton
sutrue
, ilButton
vieneKeyCode.ESCAPE
ogni volta che riceve un eventoKeyCode.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();
});