2017-02-04 3 views
-1

かなり大きいペイン(スクロールペインの子)に新しいドラッグ可能なノードを生成するアプリを作成しようとしていますが、このノードは画面の中央に生成されます。スポーンされたノードがあらかじめ設定されています

Q:これらの新しい画像ビューのX、Y座標を事前設定する方法はありますか?

ありがとうございます。例えば

button.setOnAction(new EventHandler<ActionEvent>() { 
    @Override public void handle(ActionEvent e) { 
    Bounds bounds = scrollPane.getBoundsInLocal(); 
    Bounds screenBounds = scrollPane.localToScreen(bounds); 

    int mX = (int) screenBounds.getMinX(); 
    int mY = (int) screenBounds.getMinY(); 

    Rectangle2D primScreenBounds = Screen.getPrimary().getVisualBounds(); 
    int x = (int) ((primScreenBounds.getWidth() - mX) /4); 
    int y = (int) ((primScreenBounds.getHeight() - mY) /4); 

    /* 
    System.out.println("X coords:" +x); 
    System.out.println("Y coords:" +y); 
    */ 

    pane.getChildren().addAll(new ImageView(imgvw.getImage())); 
    //somehow set coordinates of new ImageView 

    } 
});  

答えて

0

あなたが使用するレイアウトに位置を決める方法は決まっていません。しかし、あなたがPaneを使用すると仮定すると、あなたは

  • layoutXlayoutYまたは
  • translateXtranslateY
ImageView iv = new ImageView(imgvw.getImage()); 
iv.setLayoutX(x); 
iv.setLayoutY(y); 
pane.getChildren().add(iv); 

他のレイアウト、例えばを使用することができますStackPaneは自動的にlayoutXlayoutYに設定されます。この場合、あなたはfalse

iv.setManaged(false); 

やレイアウトタイプのための適切なパラメータを使用するmanagedを設定することができます。

0

これは、一般的にあなたがRegion#positionInArea()Node Sを配置することができるはずですけれどもImageView sが、中に配置されている親に依存する場合があります(RegionParentのスーパークラスです)。これは保護された方法です。つまり、独自の親を作成することができます(たとえば、StackPaneを拡張するなど)。

と言われていますが、多くの場合、それぞれ独自の動作を提供するParentNodeがあります。独自の実装を作成する前に、目的の動作を達成できないことを確認してください。 (あなたが配置行動を指定しないので、推奨事項を作るのは難しいです)

+0

私がしたいのは、 'new ImageView'の産卵用の' int x'と 'int y'座標を使うことですが、それを理解することはできません。 :/ – TomT

関連する問題