首页 文章

JavaFX节点未注册鼠标事件

提问于
浏览
-1

我准备把头发拉出来了 . 我正在开发游戏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 回答

  • 0

    Figured it out. Map 的主堆栈窗格中还有另一个图层 - >它正在拦截调用 . 删除它 - 我将弄清楚如何在以后实现它 .

相关问题