【发布时间】:2015-12-20 08:15:16
【问题描述】:
我正在做一个项目,我在 StackPane 中有一个 GUI(BorderPane) 和一个可移动地图(Pane),但是当我想点击地图或他的一个孩子时,事件处理程序仅在 GUI 上处理.我该如何解决这个问题?
我将所有对象放在地图窗格中,然后将此窗格移动到另一个窗格中。
这里有一些代码:
Pane Map = new Pane();
Map.getChildren().addAll(...);
Map.setLayoutX(0);
Map.setLayoutY(0);
Map.setOnMouseClicked(e-> System.out.println("Click1"));
GUI = new BorderPane();
GUI.getChildren().addAll(...);
GUI.setOnMouseClicked(e -> System.out.println("Click2"));
MovableMap = new Pane();
MovableMap.getChildren().add(Map);
MovableMap.setOnMouseClicked(e -> System.out.println("Click3"));
StackPane root = new StackPane();
root.getChildren().addAll(MovableMap,GUI);
root.setOnMouseClicked(e -> System.out.println("Click4"));
【问题讨论】:
-
顺便说一下,Java 命名约定是您应该以小写开头的变量名。这使它们与类的静态方法区分开来(例如,如果您将变量命名为
Map并在其上调用方法,那么对于读者和未来您自己来说,该方法是在某种类型的对象上调用还是静态地调用并不明显班级java.util.Map。)