如何在JavaFX中检测给定点是否特别受控制绑定

时间:2016-07-06 13:33:15

标签: java javafx javafx-8

我想检测给定点是否在我的控制区/绑定中。 例子 - Point(100,100)我想知道它是否在我的按钮上?

3 个答案:

答案 0 :(得分:1)

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

以下示例检查每500毫秒,如果屏幕坐标(100,100)在Button的范围内

@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();
}

答案 1 :(得分:0)

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

您可能需要在此处引用Javadoc:https://docs.oracle.com/javase/8/docs/api/java/awt/Rectangle.html

答案 2 :(得分:0)

我使用getGraphics()函数

解决了它

`Node n = tabShapes.getGraphic();

System.out.println(" x =" + pt.x +" y =" + pt.y);

Point2D p = new Point2D(pt.x,pt.y);

boolean f = n.contains(n.screenToLocal(p));`