如何在JavaFX中检测给定点是否在特定控件中绑定

如何在JavaFX中检测给定点是否在特定控件中绑定,java,javafx,javafx-8,Java,Javafx,Javafx 8,我想检测给定点是否在我的控制区域/边界内。 示例-点(100100)我想知道它是否在我的按钮上?您可以创建一个java.awt.Rectangle变量来标记按钮和区域的边界。然后使用方法Rectangle#contains测试所讨论的点是否在该区域内 您可能希望在此处引用Javadocs:将点转换为节点坐标系,并使用检查点是否实际位于节点内: 下面的示例每500毫秒检查一次屏幕坐标(100100)是否在按钮的边界内 @Override public void start(Stage primar

我想检测给定点是否在我的控制区域/边界内。
示例-点(100100)我想知道它是否在我的按钮上?

您可以创建一个
java.awt.Rectangle
变量来标记按钮和区域的边界。然后使用方法
Rectangle#contains
测试所讨论的
点是否在该区域内


您可能希望在此处引用Javadocs:

将点转换为
节点
坐标系,并使用检查点是否实际位于
节点
内:

下面的示例每500毫秒检查一次屏幕坐标(100100)是否在
按钮的边界内

@Override
public void start(Stage primaryStage) {
    Button btn = new Button("Get (100, 100) in here");
    Point2D pt = new Point2D(100, 100);

    Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(0.5), evt ->
            System.out.println(
                   btn.contains(btn.screenToLocal(pt))
            )
    ));
    timeline.setCycleCount(Animation.INDEFINITE);
    timeline.play();

    StackPane root = new StackPane();
    root.getChildren().add(btn);

    Scene scene = new Scene(root, 200, 50);

    primaryStage.setScene(scene);
    primaryStage.show();
}

我用getGraphics()函数解决了这个问题

`节点n=tabShapes.getGraphic()

System.out.println(“x=“+pt.x+”y=“+pt.y”)

点2dp=新点2d(点x,点y)


布尔f=n.contains(n.screenToLocal(p))`

它适用于按钮,但其他控件呢?如何检查该点是否位于特定菜单上、工具栏上或选项卡控件标题上等@AmitaPatil:这只使用节点类中的方法,应该适用于所有类型的节点。如果要查找某个点下的节点,您需要通过场景图搜索节点。但是,如果您想在鼠标光标下方找到节点,请使用,您可能需要在节点层次结构中向上查找您感兴趣的节点。选项卡标题不提供直接访问它们的方法,在CSS参考中查找适当的选择器可能会有所帮助。我可以为选项卡标题、菜单栏、工具栏等应用相同的逻辑吗?在这种情况下,您可能无法应用相同的逻辑,因为这些元素超出了
矩形
可以捕获的范围。然而,值得一试。这取决于你如何设置菜单。