如何在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参考中查找适当的选择器可能会有所帮助。我可以为选项卡标题、菜单栏、工具栏等应用相同的逻辑吗?在这种情况下,您可能无法应用相同的逻辑,因为这些元素超出了矩形
可以捕获的范围。然而,值得一试。这取决于你如何设置菜单。