当前位置: 首页 > 知识库问答 >
问题:

JavaFX节点未注册鼠标事件

微生季
2023-03-14

我准备好为此拔掉头发了。我正在开发游戏图形用户界面,它有一个由网格单元组成的地图。

单元格网格由StackPane组成,然后由ImageView或Shapes等组成的几个层组成。

整个内容包含在GridPane中,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的代码-

private void initializeHandlers() {
    myParent.addEventHandler(MouseEvent.ANY, (e) -> System.out.println("I'm responding"));  
}

谢谢你的帮助!

编辑:问题出在这里,整个应用程序的布局如下:

边框窗格:中间-

我对JavaFX有些陌生,所以这可能不是一个好方法。但是由于某种原因,鼠标事件不能通过底层的堆积层-

共有1个答案

阚亮
2023-03-14

想出来了。地图的主堆栈窗格中还有一层-

 类似资料:
  • 我希望用户能够拖动并移动窗格周围的圆圈。圆圈似乎没有(几乎)记录任何鼠标事件(如最后定义的)。我有一个空窗格的完全相同的代码,它工作得很好。如果我改变 到 它工作得很好,但这不是我想要的,因为我需要操纵两个圆圈。有什么想法吗?如果您能告诉我如何隐藏圆圈中与相邻元素重叠的部分,如果它的中心太靠近窗格边框,我将不胜感激。 } 另一方面,这段代码应该做同样的事情,工作得非常完美

  • 我正在尝试接收JavaFX 2.2中一个不可见节点的MouseEvents。可以把它想象成一个互动但不可见的区域,比如当鼠标悬停在它上面时,它会触发一个动作。问题是,这不是一个静态定义的区域,但有多个区域(很多)可以被应用程序移动和调整大小。所以对于我的用例来说,全局监听鼠标移动并手动检测鼠标移动事件会有很大的开销。 目前,我正在试验一个透明矩形(),但实际/最终的应用程序将使用某种窗格,因为它实

  • 我尝试了几乎所有的方法,但是鼠标拖动事件没有触发,就像这里解释的那样: https://openjfx.io/javadoc/11/javafx.graphics/javafx/scene/input/MouseDragEvent.html 下面是一个简单的示例,您可以尝试一下(我在JavaFX11.0.2中使用Java11): 我想通过在或中获取的引用。有许多嵌套窗格等,因为我想保持原来的项目布

  • 我要在两个图像视图之间绘制路径,视图与图片相同 此路径从其中一个imageview开始(按鼠标),继续(按鼠标)并在窗格上移动事件,并且必须在另一个imageview结束(按鼠标)。这是第一次鼠标按下在imageviews上没有收到任何鼠标按下事件后的问题,该事件只是在窗格上收到,因为绘制线没有停止。我的代码出了什么问题? 这是我的控制器代码: 请帮帮我。

  • 我正在构建一个Java应用程序。这个应用程序是一个典型的“油漆”应用程序,你可以选择一种颜色,并在画布上绘制。除了...我将有一个圆圈数组分布在画布的顶部。我希望这些圆立即改变颜色,如果,当用户正在绘制和鼠标得到圆的X(10)个像素(其中X是绘制的线的宽度除以2)。 这是我的密码。我有一张画布是一组的一部分。我还创建了一个圆圈节点,并将其作为组的一部分。我想我需要以某种方式创建一个鼠标事件,当用户

  • 所以我有这个anchorpane,我希望为第二个鼠标键添加一个鼠标listner。我尝试了以下方法,但我一直得到一个错误,有人知道问题是什么吗? 为了记录在案,我也尝试过这样做: 绑定不匹配:MouseButton类型不能有效替代EventHandler类型的有界参数