2016-11-24 22 views
0

ペイン内に描画された矩形の座標を取得するにはどうすればよいですか?ペインに描画された矩形座標を取得する

これは私が四角形を描画する方法である:

Rectangle r = new Rectangle(); 
r.setX(50); 
r.setY(50); 
r.setWidth(200); 
r.setHeight(100); 
r.setStroke(Color.BLUE); 
r.setStrokeWidth(1); 
r.setFill(Color.TRANSPARENT); 
DragResizeMod.makeResizable(r); 
pane.getChildren().add(r); 

は、このクラスイムのリンクである長方形に

https://github.com/varren/JavaFX-Resizable-Draggable-Node/blob/master/src/sample/DragResizeMod.java

のサイズを変更するために使用して、どのように私は、Aの座標を得るのですか描かれた矩形?座標を描画する前にリストに渡さずに。

はありがとう

+0

あなたはより詳細な何を説明してくださいでした:あなたはそれが子供たちの、位置が正確ではないかもしれないが、Paneはそのうちの一つではありません(それの多くはサブクラスがあるのです)の位置を調整Parentを使用している場合達成しようとしていますか? [1]任意の矩形の座標を__で描画したいのですか? [2]描画する前に四角形の座標を求めますか? – SSchuette

+0

マウスを押してドラッグして矩形を描画します。また、このコードをhttps://github.com/varren/JavaFX-Resizable-Draggable-Node/blob/master/src/sample/DragResizeMod.java という矩形のサイズ変更に使用しています。だから私は長方形のサイズを変更する場合は、その座標を変更します。だから私が本当に必要なのは、サイズを変更した後にその座標を取得することです –

答えて

1

あり、いくつかの可能な解決策がありますが、簡単なものは、このようなxPropertyxProperty @ Rectangle JavaDocと類似yPropertyにハンドラを追加することができます。あなたも追加する必要があり、完全性について

rectangle.xProperty().addListener((Observable, oldValue, newValue) -> { 
    System.out.println("X position changed from <" + oldValue + "> to <" + newValue + ">"); 
}); 

ハンドブックはwidthProperty(および類似のheightProperty)にも適用されます。 JavaDocは、xPropertyを引用しているため、

矩形の左上隅のX座標を定義します。

サイズを変更しますが、左上隅が同じ位置にある場合は、xPropertyの通知を受け取りません!

+0

どこにコードを追加すると思いますか?私はそれを "初期化"に追加しますが、何も起こりません。 –

+0

矩形を作成する場所に追加できます。例えば。直前の 'Rectangle r = new Rectangle();'ハンドラ内の 'System.out.prinln()'にブレークポイントを設定し、コールされたかどうかをチェックします。 – SSchuette

+0

thats私がやったこと。コードを呼び出すことはありません。私はrが私の変数名であるので、rectangle.xPropertyをr.xPropertyに変更しました –

0

リサイズ後に座標が必要な場合は、boundsInParentプロパティを使用します。せん断/回転コンポーネントで変形を適用しない限り、Rectangleの境界が与えられます。

Rectangle r = ... 
... 
// resize 

Bounds boundsAfterResize = r.getBoundsInParent(); 
+0

このコードはどのように使用しますか?矩形の大きさを変更した後、私は "0"を返します –

+0

@pdftoimage a) 'Bounds'はプリミティブではないので、0を得ることはできません。b)それらの境界の特定のプロパティが' 0'ならば、このプロパティが「0」になるようにサイズ変更/再配置/変換されます。これがそのプロパティの望ましい値でない場合は、***あなたのコード***のバグを見つけ出す必要があります(あなたの質問BTWでサイズ変更の何も表示していません)。 – fabian

関連する問題