2009-10-07 47 views
10

如何獲取場景中節點的實際位置。絕對位置,無論任何容器/變換。獲取JavaFX中節點的全局座標

例如,我想翻譯某個節點a,以便它會臨時重疊另一個節點b。所以我想把他的translateX屬性設置爲b.globalX-a.globalX

文檔說:

定義被添加到佈局的目的,這個節點 的 變換座標 翻譯的X座標。集裝箱 或組執行佈局將設置 此變量相對於 layoutBounds.minX爲了位於 節點在所需的佈局 位置。

例如,如果孩子應該有finalX的 最終位置:

child.layoutX = finalX - child.layoutBounds.minX; 

也就是說,任何節點的最後的座標應該是

finalX = node.layoutX + node.layoutBounds.minX 

但是運行下面的代碼:

var rect; 
Stage { 
    title: "Application title" 
    width: 250 
    height:250 
    scene: Scene { 
     content: [ 
      Stack{content:[rect = Rectangle { width:10 height:10}] layoutX:10} 
     ] 
    } 
} 

println("finalX = {rect.layoutX+rect.layoutBounds.minX}"); 

給我finalX = 0.0而不是finalX = 10.0作爲文檔看似狀態。

是否有一個明確的方法來獲得JavaFX中的絕對最終定位座標?

+1

只是想知道,什麼格式是上面的代碼嗎?這不是Java,也許是JSON? – 2015-08-23 14:31:16

+0

JavaFX是Sun/Oracle的一種新編程語言。 – 2015-08-23 18:44:40

+0

格式,我知道它是JavaFX,但它不是Java代碼。 – 2015-08-23 19:15:59

回答

3

我發現的唯一的解決辦法,到目前爲止是

rect.localToScene(rect.layoutBounds.minX, rect.layoutBounds.minY) // a Point2D{x:Float y:Float} object 

似乎這不是我的「最好」的方式做到這一點(請注意,此功能是不綁定)。它仍然適用於JavaFX 1.2。

12

對於界限:

爲JavaFX 1
bounds = rect.localToScene(rect.getBoundsInLocal()); 

工作和2