Sam*_*yer 25 java javafx event-handling mouseevent
我有一个JavaFX应用程序,我想在场景中的任何地方添加一个鼠标单击的事件处理程序.以下方法可以正常工作,但不完全按我想要的方式工作.这是一个说明问题的示例:
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();
}
Run Code Online (Sandbox Code Playgroud)
如果我单击空白处的任何位置,则EventHandler调用该handle()方法,但如果单击button该handle()方法,则不会调用该方法.我的应用程序中有许多按钮和其他交互元素,因此我需要一种方法来捕获这些元素的点击,而无需为每个元素手动添加新的处理程序.
Bri*_*ski 47
您可以使用addEventFilter()向场景添加事件过滤器.这将在任何子控件使用事件之前调用.以下是事件过滤器的代码.
scene.addEventFilter(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
System.out.println("mouse click detected! " + mouseEvent.getSource());
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63770 次 |
| 最近记录: |