Behandeln Sie Mausereignisse überall mit JavaFX

Habe ich eine JavaFX-Anwendung, und ich möchte dem hinzufügen einer Ereignisprozedur für ein Mausklick an einer beliebigen Stelle in der Szene. Der folgende Ansatz funktioniert ok, aber nicht ganz, wie ich will. Hier ist ein Beispiel, um das problem zu veranschaulichen:

public void start(Stage primaryStage) {
    root = new AnchorPane();
    scene = new Scene(root,500,200);
    scene.setOnMousePressed(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            System.out.println("mouse click detected! "+event.getSource());
        }
    });

    Button button = new Button("click here");
    root.getChildren().add(button);

    primaryStage.setScene(scene);
    primaryStage.show();
}

Wenn ich Sie irgendwo in einem leeren Raum, der EventHandler ruft die handle() Methode, aber wenn ich auf die buttondie handle() Methode wird nicht aufgerufen. Es gibt viele Schaltflächen und andere interaktive Elemente in meine Anwendung, also brauche ich einen Ansatz zu fangen Klicks auf diese Elemente als auch die zimmerreserviereung, ohne das Sie manuell fügen Sie einen neuen handler für jedes einzelne element.

InformationsquelleAutor der Frage Sam De Meyer | 2013-09-03

Schreibe einen Kommentar