2017-03-21 78 views
3

我在使用圖像的ImageView上的setX和setY設置我的JavaFX程序中的圖像時出現問題。我不確定是什麼問題?感謝任何幫助!
這裏是我的代碼:當試圖定位圖像時,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中的一個之上)。

取而代之的是使用PaneGroup,它們不是託管的佈局窗格,而是允許您根據需要在窗格中佈局內容。

要在窗格內部佈局您的內容,您可以使用setLayoutXsetLayoutY而不是setX和setY,儘管我猜setX和setY也應該可以工作(我以前從未在ImageView上使用它們)。

Pavlo,在我輸入時已經創建了一個答案(所以這個答案是重複的),但是我會留下它,因爲它增加了更多的解釋。

2

Pane更換StackPane應該解決的問題。

0

如果您不管出於何種原因需要在StackPane中定位某個項目,您可以使用setTranslateXsetTranslateY。 Theese方法在StackPane完成其佈局後設置x和y值,因此根據StackPane用於其子對象的對齊方式,您將有不同的起始位置。

相關問題