javafx
Taste
Suche…
Aktionslistener hinzufügen
Schaltflächen lösen Aktionsereignisse aus, wenn sie aktiviert werden (z. B. ein Klick, eine Tastenkombination für die Schaltfläche wird gedrückt, ...).
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
Wenn Sie Java 8+ verwenden, können Sie Lambdas für Aktionslistener verwenden.
button.setOnAction((ActionEvent a) -> System.out.println("Hello, World!"));
// or
button.setOnAction(a -> System.out.println("Hello, World!"));
Hinzufügen einer Grafik zu einer Schaltfläche
Schaltflächen können eine Grafik haben. graphic
kann ein beliebiger JavaFX-Knoten sein, wie eine ProgressBar
button.setGraphic(new ProgressBar(-1));
Eine ImageView
button.setGraphic(new ImageView("images/icon.png"));
Oder sogar eine andere Taste
button.setGraphic(new Button("Nested button"));
Erstellen Sie eine Schaltfläche
Das Erstellen eines Button
ist einfach:
Button sampleButton = new Button();
Dadurch wird eine neue Button
ohne Text oder Grafik erstellt.
Wenn Sie eine erstellen möchten Button
mit einem Text, verwenden Sie einfach den Konstruktor, der eine nimmt String
als Parameter (die die Sets textProperty
des Button
):
Button sampleButton = new Button("Click Me!");
Wenn Sie eine Button
mit einer Grafik oder einem anderen Node
erstellen möchten, verwenden Sie diesen Konstruktor:
Button sampleButton = new Button("I have an icon", new ImageView(new Image("icon.png")));
Standard- und Abbrechen-Schaltflächen
Button
Schaltflächen-API bietet eine einfache Möglichkeit, Tastenkombinationen allgemeine Tastenkombinationen zuzuweisen, ohne auf die der Scene
zugewiesene Liste von Beschleunigern zugreifen zu müssen oder explizit die Tastenereignisse zu hören. Es gibt zwei praktische Methoden: setDefaultButton
und setCancelButton
:
Wenn Sie
setDefaultButton
auftrue
wird derButton
jedes MalKeyCode.ENTER
wenn er einKeyCode.ENTER
empfängt.Wenn
setCancelButton
auftrue
wirdtrue
wird derButton
jedes MalKeyCode.ESCAPE
wenn er einKeyCode.ESCAPE
empfängt.
Im folgenden Beispiel wird eine Scene
mit zwei Tasten erstellt, die beim Drücken von Eingabe- oder Escape-Tasten ausgelöst werden, unabhängig davon, ob sie scharfgestellt sind oder nicht.
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);
Der obige Code funktioniert nicht, wenn diese KeyEvents
von einem übergeordneten Node
:
scene.setOnKeyPressed(e -> {
e.consume();
});