2017-03-21 2 views
3

JavaFXプログラムでイメージを配置する際に問題があります。イメージのImageViewにsetXとsetYを使用します。問題は何か分かりませんか?与えられた助けをありがとう!
ここに私のコードです:イメージを配置しようとしたときにsetXとsetYが機能しない

 Image rocket2 = new Image("img/Rocket.png"); 
     ImageView iv1 = new ImageView(rocket2); 
     iv1.setX(60); 
     iv1.setY(44); 

     Image rocket1 = new Image("img/Rocket.png"); 
     ImageView iv2 = new ImageView(rocket1); 
     iv2.setX(5); 
     iv2.setY(16); 

     Image background = new Image("img/space.png"); 
     ImageView iv3 = new ImageView(background); 

     StackPane root = new StackPane(); 
     root.getChildren().addAll(iv3, iv2, iv1); 
     Scene scene = new Scene(root, 300, 300); 
     scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 
     primaryStage.setScene(scene); 
     primaryStage.setResizable(false); 
     primaryStage.setTitle("Space stuff"); 
     primaryStage.show(); 

私は背景画像を設定しているので、何かがうまくいかないと思われます。
img here on what's happening

答えて

2

レイアウトの位置(setXsetY)を明示的に定義する場合は、項目をStackPaneに配置しないでください。 StackPaneは、管理されたレイアウトペインです。追加された項目の位置が自動的に設定されます(デフォルトでは、StackPane内部のすべてのものが上に重なります)。

代わりにPaneまたはGroupを使用してください。これは管理されたレイアウトペインではなく、必要に応じてコンテンツをペインにレイアウトすることができます。

コンテンツをペイン内にレイアウトするには、setXとsetYの代わりにsetLayoutXsetLayoutYを使用できますが、setXとsetYも動作するはずです(前にImageViewで使用したことはありません)。

パブロは、これを入力している間にすでに回答を作成しています(この回答は重複しています)。しかし、もう少し説明が追加されるので、これを残しておきます。

2

PaneStackPaneを交換すると、問題を解決する必要があります。

0

しかし、StackPaneにアイテムを配置する理由が何であれ、setTranslateXsetTranslateYを使用することができます。これらのメソッドは、StackPaneのレイアウトが完了した後にxとyの値を設定します。そのため、StackPaneがその子に対して使用するAlignmentによって異なる開始位置が設定されます。

関連する問題