javafx
Przycisk
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
natrue
spowoduje, żeButton
będzie uruchamiany za każdym razem, gdy odbierze zdarzenieKeyCode.ENTER
.Ustawienie wartości
setCancelButton
natrue
spowoduje, żeButton
będzie uruchamiany za każdym razem, gdy odbierze zdarzenieKeyCode.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();
});