handling event and java event-handling javafx mouseevent

and - Gestione eventos de mouse en cualquier lugar con JavaFX



javafx scene event (1)

Puede agregar un filtro de evento a la escena con addEventFilter() . Se llamará a esto antes de que el evento sea consumido por cualquier control secundario. Así es como se ve el código del filtro de eventos.

scene.addEventFilter(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent mouseEvent) { System.out.println("mouse click detected! " + mouseEvent.getSource()); } });

Tengo una aplicación JavaFX y me gustaría agregar un controlador de eventos para hacer clic con el mouse en cualquier parte de la escena. El siguiente enfoque funciona bien, pero no exactamente de la manera que quiero. Aquí hay una muestra para ilustrar el problema:

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(); }

Si hago clic en cualquier lugar del espacio vacío, EventHandler invoca el método handle() , pero si hago clic en el button , no se invoca el método handle() . Hay muchos botones y otros elementos interactivos en mi aplicación, por lo que necesito un enfoque para captar los clics en esos elementos sin tener que agregar manualmente un nuevo controlador para cada elemento.