我在使用setX上的setX和setY为我的JavaFX程序中定位图像时遇到问题.我不确定是什么问题?感谢任何给予的帮助!
这是我的代码:
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();
解决方法:
如果要明确定义其布局位置(setX和setY),请勿将项目放在StackPane中. StackPane是托管布局窗格.它将自动设置添加到其中的项目的位置(默认是将所有内容置于StackPane内的另一个中心).
而是使用Pane或Group,它们不是托管布局窗格,允许您根据需要在窗格中布局内容.
要在Pane中布局你的内容,你可以使用setLayoutX和setLayoutY而不是setX和setY,虽然我猜setX和setY也应该可以工作(我以前从未在ImageView上使用过它们).
帕夫洛,在我打字的时候已经创建了一个答案(所以这个答案是重复的),但我会留下这个,因为它增加了一些解释.
标签:java,image,imageview,javafx,javafx-2
来源: https://codeday.me/bug/20190608/1197443.html