【问题标题】:java fx localToScene() Coordsjava fx localToScene() 坐标
【发布时间】:2017-06-13 14:53:49
【问题描述】:

我们有一个 java fx 8 应用程序,它在运行时根据收到的环境事件逐步创建窗格。当它们被创建时,这些窗格随后被添加为其他窗格的子窗格,这些窗格都构成了整个场景的一部分。所有这一切都很好,当显示在屏幕上时,所有窗格都已创建,并且可以看到随着事件的出现出现在屏幕上,并且可以看到它们的位置正在调整,因为在它们周围创建和添加了其他窗格等。

然而,当给定其他外部环境事件时,我们希望在两个已创建的窗格(在运行时创建的窗格)之间显示消息转换时会出现问题。为此,我们使用以下示例代码的 sn-p 获取两个窗格中每个窗格的中心 X,Y 坐标:

Bounds localBounds1 = pane1.getBoundsInLocal();
Point2D localPoint1 = new Point2D(localBounds1.getWidth()/2, 
localBounds1.getHeight()/2);
Point2D scenePoint1 = pane1.localToScene(localPoint1);

Bounds localBounds2 = pane2.getBoundsInLocal();
Point2D localPoint2 = new Point2D(localBounds2.getWidth()/2, 
localBounds2.getHeight()/2);
Point2D scenePoint2 = pane2.localToScene(localPoint2);

// here after we create a PathTransition from scenePoint1 to scenePoint2 and play it to see a message move from one Pane to the other.

我们遇到的问题是,几乎所有时间,调用窗格的.localToScene() 返回的Point2D 坐标不一定是当前显示在屏幕上的坐标。就好像返回的坐标是第一次添加窗格时的初始坐标,但是在创建和添加其他窗格之前(从而调整窗格的场景坐标)。

我们尝试在计算 scenePoint1scenePoint2 之前强制调用 .requestLayout().layout(),但返回的坐标几乎总是过时的。

为了获取节点相对于场景的当前 x,y 坐标,我们是否做错了什么?

【问题讨论】:

标签: javafx-8


【解决方案1】:

这个问题根本与 java fx 相关。

如果我们从未正确管理的定制地图中获取窗格,这是我们的编码错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 2018-02-26
    • 1970-01-01
    相关资源
    最近更新 更多