我在使用ImageView的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();

我怀疑出现了问题,因为设置了背景图片。
img here on what's happening

最佳答案

如果要明确定义它们的布局位置(setXsetY),请不要将它们放在StackPane中。 StackPane是托管布局窗格。它将自动设置添加到其中的项目的位置(默认设置是在StackPane中将所有内容居中放置在其他内容的顶部)。

而是使用PaneGroup,它们不是托管的布局窗格,可让您根据需要在Pane中布局内容。

要在窗格中布局内容,可以使用 setLayoutX setLayoutY 而不是setX和setY,尽管我猜setX和setY也应该起作用(我以前从未在ImageView上使用过它们)。

Pavlo在我键入此答案时已经创建了一个答案(因此该答案是重复的),但是我将保留它,因为它会添加更多说明。

07-24 09:16