Event Handler in JavaFX
In diesem Artikel geht es um Event Handler in JavaFX. Wir haben bereits mit Event Eandler gearbeitet, jedoch wollte ich das hier nochmal etwas im Detail erklären. Wenn wir mit Event Handler arbeiten möchten, dann müssen wir ihn registrieren. Dass können wir mit der addEventhandler() Methode machen.
Event Handler in JavaFX für ein Node:
TextField textField = new TextField();
textField.setPromptText("Schreibe hier");
// Registriere ein Event für ein bestimmtes Node
textField.addEventHandler(KeyEvent.KEY_PRESSED,
new EventHandler() {
public void handle(KeyEvent keyEvent) {
System.out.println("Taste getdrückt " + keyEvent.getCode());
keyEvent.consume();
}
});
Wir können einen EventHandler jedoch auch allgemein anlegen und später für verschiedene Nodes verwenden. Denn das Key Event das wir eben behandelt haben, ist nur für das eine TextField. Wieder verwenden wir die consume Methode damit das Keyboard Node (Welches das Parent Node ist) dieses Event nicht erhält. Schauen wir uns mal das anlegen eines Event Handler an, welchen wir wiederverwenden.
Event Handler in javaFX wiederverwenden:
package application;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
GridPane root = new GridPane();
Scene scene = new Scene(root,400,400);
TextField textField1 = new TextField();
textField1.setPromptText("Schreibe hier");
TextField textField2 = new TextField();
textField2.setPromptText("Schreibe hier");
final EventHandler keyEventHandler =
new EventHandler() {
public void handle(final KeyEvent keyEvent) {
System.out.println("Taste getdrückt " + keyEvent.getCode());
keyEvent.consume();
}
};
textField1.setOnKeyPressed(keyEventHandler);
textField2.setOnKeyPressed(keyEventHandler);
root.setConstraints(textField1, 0,0);
root.setConstraints(textField2, 0,1);
root.getChildren().addAll(textField1,textField2);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
[image img_id=”6283″ alt=”Event Handler in JavaFX” width=”573″ height=”200″]
Du kannst wie du sehen kannst, deinen angelegten eventHandler auf verschiedenen Nodes anwenden.