10

シーン内のノードの実際の位置を取得するにはどうすればよいですか。コンテナ/トランスフォームに関係なく、絶対位置。

たとえば、特定のノードを移動して、a別のノードに一時的にオーバーラップさせたいとしますbtranslateXそこで、彼のプロパティをに設定したいと思います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で絶対に最終的な位置決め座標を取得する明確な方法はありますか?

4

3 に答える 3

13

境界の場合:

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

JavaFx 1 および 2 で動作します。

于 2012-10-03T20:21:18.800 に答える
2

JavaFX 8 以降、ローカル座標を画面座標に変換するメソッドが追加されました。それらの名前は「localToScreen」で始まります

次のリンクを確認できます http://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html#localToScreen-double-double-

于 2014-07-10T14:09:53.970 に答える