Benutzerinteraktion mit dem Eventhandler nutzen in JavaFX
In diesem Artikel lernst du wie man die Benutzerinteraktion mit dem Eventhandler nutzen kann. Dazu müssen wir unsere Main klasse erweitern in dem wir den Eventhandler implementieren:
public class Main extends Application implements EventHandler{
Wenn wir das eintragen, wird von uns so einiges von Eclipse erwartet. Wir müssen Klassen importieren und fehlende Methoden implementieren:
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
und die Methoden:
@Override
public void handle(ActionEvent arg0) {
// Hier kommt der Code rein, der ausgeführt werden soll, wenn Button(s) geklickt werden.
}
Schauen wir uns mal ein Beispiel an. In diesem Beispiel für – die Benutzerinteraktion mit dem Eventhandler nutzen – füge ich 2 Buttons ein und gebe diesen Funktionalität.
Beispiel für Benutzerinteraktion mit dem Eventhandler nutzen in JavaFX
package application;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
// wir implementieren den Eventhandler
public class Main extends Application implements EventHandler{
// Hier legen wir einen Button an
Button button;
int i = 0;
@Override
public void start(Stage primaryStage) {
try {
primaryStage.setTitle("Unser erstes Fenster");
StackPane root = new StackPane();
Scene scene = new Scene(root,400,400);
// hier legen wir den Button an und setzten seinen Text
button = new Button();
button.setText("Klick mich");
// #1
button.setOnAction(this);
root.getChildren().add(button);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
// #2
@Override
public void handle(ActionEvent arg0) {
if(arg0.getSource() == button){
i++;
System.out.println(i + " mal geklickt");
}
}
}
In #1 weisen wir den Eventhandler hinzu in dem wir der setOnAction Methode this übergeben. Damit sagen wir, dass es wir den Eventhandler von dieser Klasse verwenden wollen.
In #2 Fügen wir nun unserer Handle Funktion hinzu, was passieren soll, wenn button angeklickt wird.
Wenn wir nun unseren Button anklicken, dann wird in der Konsole ausgegeben
1 mal geklickt
Und so weiter.
Wenn wir nun mehrere Buttons haben, dann müssen wir diese natürlich anlegen, initialisieren und die handle Funktion anpassen. z.B.
@Override
public void handle(ActionEvent arg0) {
if(arg0.getSource() == button){
i++;
System.out.println(i + " mal geklickt");
}
if(arg0.getSource() == button2){
i++;
System.out.println("Button 2 Wurde geklickt");
}
}
Es ist also wirklich kein Hexenwerk Buttons und den Eventhandler zu verwenden um unsere ersten Benutzerinteraktion zu erhalten 🙂