2009-10-07 8 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 = 10.0の代わりに私にfinalX = 0.0を与えます。

JavaFXで絶対的な最終的な座標を取得する明確な方法はありますか?

+1

を確認することができます「localToScreen」と

を開始しますか?それはJava、多分JSONではありませんか? –

+0

Sun/Oracleの新しいプログラミング言語であるJavaFXです。 –

+0

フォーマットは、JavaFXだとわかっていますが、Javaコードではありません。 –

答えて

3

私が見つけた唯一の解決策は、これまでのところ(この機能がバインドされていないことに注意してください)それを行うために「最善」の方法として、私には思えない

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

です。 JavaFX 1.2でも動作します。境界について

12

bounds = rect.localToScene(rect.getBoundsInLocal()); 

JavaFXの1のために働くと2

関連する問題