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
setDefaultButtonauftruewird derButtonjedes MalKeyCode.ENTERwenn er einKeyCode.ENTERempfängt.Wenn
setCancelButtonauftruewirdtruewird derButtonjedes MalKeyCode.ESCAPEwenn er einKeyCode.ESCAPEempfä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();
});