Java 尝试定位图像时setX和setY不工作
我在JavaFX程序中使用图像视图上的setX和setY来定位图像时遇到问题。我不确定是什么问题?感谢您的帮助Java 尝试定位图像时setX和setY不工作,java,image,javafx,imageview,javafx-2,Java,Image,Javafx,Imageview,Javafx 2,我在JavaFX程序中使用图像视图上的setX和setY来定位图像时遇到问题。我不确定是什么问题?感谢您的帮助 这是我的密码: 我怀疑出了什么问题,因为我设置了背景图像。 用窗格替换堆栈窗格应该可以解决问题。如果要明确定义项目的布局位置(setX和setY),请不要将项目放在一个窗格中。StackPane是一个托管布局窗格。它将自动设置添加到其中的项目的位置(默认设置是将StackPane中的所有内容一个置于另一个之上居中) 而是使用a或a,它们不是受管理的布局窗格,允许您按照自己的意愿在窗格中
这是我的密码: 我怀疑出了什么问题,因为我设置了背景图像。
用
窗格
替换堆栈窗格
应该可以解决问题。如果要明确定义项目的布局位置(setX
和setY
),请不要将项目放在一个窗格中。StackPane是一个托管布局窗格。它将自动设置添加到其中的项目的位置(默认设置是将StackPane中的所有内容一个置于另一个之上居中)
而是使用a或a,它们不是受管理的布局窗格,允许您按照自己的意愿在窗格中布局内容
要在窗格中布局内容,可以使用and而不是setX和setY,不过我想setX和setY也应该可以工作(我以前从未在ImageView上使用过它们)
Pavlo,在我键入此内容时已经创建了一个答案(因此此答案是重复的),但我将保留此内容,因为它添加了更多的解释。如果出于任何原因需要在StackPane中定位项目,您可以使用和。这些方法在StackPane完成布局后设置x和y值,因此根据StackPane为其子节点使用的对齐方式,您将有一个不同的起始位置。Awesome,这有助于使StackPane中的一个节点居中,而另一个节点稍微微开。很高兴我没有错过这个答案!
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();