我想检测给定点是否在我的控制区/绑定中。 例子 - Point(100,100)我想知道它是否在我的按钮上?
答案 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));`