我在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();我怀疑有些地方出了问题,因为我设置了背景图像。
发布于 2017-03-21 23:11:42
如果您希望显式地定义项目的布局位置( StackPane和setY),请不要将项放置在setY中。StackPane是托管布局窗格。它将自动设置添加到它的项目的位置(默认是将所有内容(一个放在StackPane内部的另一个之上)中心)。
相反,可以使用窗格或组,它们不是托管布局窗格,允许您任意地在窗格中布局内容。
要在窗格中布局内容,可以使用setLayoutX和setLayoutY,而不是setX和setY,不过我认为setX和setY也应该能工作(我以前从未在ImageView上使用过)。
Pavlo,已经创建了一个答案,而我正在输入这个(所以这个答案是一个重复的),但我会留下这个,因为它增加了更多的解释。
发布于 2017-03-21 23:05:54
用StackPane代替Pane可以解决这个问题。
发布于 2017-03-22 16:45:23
但是,如果出于任何原因希望在StackPane中放置项,则可以使用setTranslateX和setTranslateY。这些方法在StackPane完成布局之后设置x和y值,因此根据StackPane对其子级使用的对齐方式,您将有一个不同的起始位置。
https://stackoverflow.com/questions/42939530
复制相似问题