Szukaj…


Dodanie detektora akcji

Przyciski uruchamiają zdarzenia akcji po ich aktywacji (np. Kliknięciu, naciśnięciu przycisku dla klawisza, ...).

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

Jeśli używasz Java 8+, możesz użyć lambdas do nasłuchiwania akcji.

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

Dodawanie grafiki do przycisku

Przyciski mogą mieć grafikę. graphic może być dowolnym węzłem JavaFX, takim jak ProgressBar

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

ImageView

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

Lub nawet inny przycisk

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

Utwórz przycisk

Utworzenie Button jest proste:

Button sampleButton = new Button();

Spowoduje to utworzenie nowego Button bez tekstu lub grafiki w środku.

Jeśli chcesz utworzyć Button z tekstem, po prostu użyj konstruktora, który przyjmuje parametr String jako parametr (który ustawia właściwość textProperty Button ):

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

Jeśli chcesz utworzyć Button z grafiką w środku lub dowolnym innym Node , użyj tego konstruktora:

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

Domyślne i Anuluj Przyciski

Button API zapewnia łatwy sposób przypisywania popularnych skrótów klawiaturowych do przycisków bez potrzeby dostępu do listy akceleratorów przypisanych do Scene lub jawnego słuchania kluczowych zdarzeń. Mianowicie, dostępne są dwie metody wygody: setDefaultButton i setCancelButton :

  • Ustawienie wartości setDefaultButton na true spowoduje, że Button będzie uruchamiany za każdym razem, gdy odbierze zdarzenie KeyCode.ENTER .

  • Ustawienie wartości setCancelButton na true spowoduje, że Button będzie uruchamiany za każdym razem, gdy odbierze zdarzenie KeyCode.ESCAPE .

Poniższy przykład tworzy Scene z dwoma przyciskami, które są uruchamiane po naciśnięciu klawisza Enter lub Escape, niezależnie od tego, czy są one aktywne, czy nie.

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

Powyższy kod nie będzie działać, jeśli te KeyEvents są wykorzystywane przez dowolny Node nadrzędny:

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


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow