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 auf true wird der Button jedes Mal KeyCode.ENTER wenn er ein KeyCode.ENTER empfängt.

  • Wenn setCancelButton auf true wird true wird der Button jedes Mal KeyCode.ESCAPE wenn er ein KeyCode.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();
});


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow