我准备把头发拉出来了 . 我正在开发游戏GUI界面,它有一个由单元格组成的 Map .
单元格网格由StackPane组成,然后由ImageViews或Shapes等组成 .
整个东西包含在GridPane中,它包含BorderPane的中心元素;
我不能将鼠标事件添加到底层场景,因为所有节点都得到它 - >没有好处 . 我需要突出显示鼠标下的节点 .
这是创建堆栈的代码:
private void initializePanes() {
myParent = new StackPane();
myObjectLayer = new StackPane();
myOverlayLayer = new StackPane();
myParent.getChildren().addAll(myObjectLayer, myOverlayLayer);
myParent.getStylesheets().add(myConfig.getString("StyleSheet"));
}
这是设置EventHandler的代码 - >没有任何工作或注册 . 我也尝试了EventFilters - 没有骰子,除非我写入底层场景,这是一个禁忌 .
private void initializeHandlers() {
myParent.addEventHandler(MouseEvent.ANY, (e) -> System.out.println("I'm responding"));
}
帮助将不胜感激!
EDIT :这是问题,整个应用程序的布局如下:
BorderPane:Center - > StackPane在那个堆栈窗格中我有一个ScrollPane,它包含一个GridPane,它包含单元格(我在上面发布了代码) .
我对JavaFX有些新意,所以这可能不是一个很好的方法 . 但由于某些原因,鼠标事件不会使它超过底层的堆叠窗格 - >即它们被边框的中心面板吸收 . 我无法将事件处理程序添加到滚动窗格,网格窗格或gridpane中的任何单元格 .
1 回答
Figured it out. Map 的主堆栈窗格中还有另一个图层 - >它正在拦截调用 . 删除它 - 我将弄清楚如何在以后实现它 .