使用 SceneBuilder 显示图像

Display an image with SceneBuilder

我用 SceneBuilder、3 个按钮和 2 个 ImageView 创建了一个小的 FXML 文件。

我想做的是:

  1. 运行 应用程序并在启动时显示 2 张图片
  2. 当按下NEXT按钮时,显示另外2张图片。

我的问题不是切换图像,而是将图像显示为场景生成器创建的 ImageView。

这是我的控制器 class:

public class Controller {
    private Button Next; //1st button
    private Button J2inc; //2nd button
    private Button J1inc; /3rd button
    private ImageView Img1;
    private ImageView Img2;

    void Inc2(ActionEvent event) {
        //nothing for the moment
    }
    void Inc1(ActionEvent event) {
        //nothing for the moment
    }
    void Nextimg(ActionEvent event) {
        //nothing for the moment
    }
}

还有我的start方法:

public void start(Stage primaryStage) throws Exception {
    Parent root =  FXMLLoader.load(getClass().getResource("Css.fxml"));
    Scene scene = new Scene(root);
    primaryStage.setScene(scene);
    primaryStage.setTitle("P ");
    primaryStage.show();
}

我不知道如何初始化 ImageView img1 所以它加载了一些东西。

无法在此处添加 FXML,因此我将只添加 ImageView 行:

  <ImageView fx:id="Img1" fitHeight="750.0" fitWidth="450.0" layoutY="22.0" pickOnBounds="true" preserveRatio="true" AnchorPane.bottomAnchor="50.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="450.0" AnchorPane.topAnchor="25.0" />

要在控制器中对其进行初始化,通过对其进行注解使其可访问 @FXML,并在控制器的 initialize() 方法中对其进行初始化:

public class Controller {
    private Button Next; //1st button
    private Button J2inc; //2nd button
    private Button J1inc; /3rd button

    @FXML
    private ImageView Img1;

    private ImageView Img2;

    public void initialize() {
        Img1.setImage(new Image(...));
    }

    void Inc2(ActionEvent event) {
        //nothing for the moment
    }

    void Inc1(ActionEvent event) {
        //nothing for the moment
    }

    void Nextimg(ActionEvent event) {
        //nothing for the moment
    }
}

如果您希望直接在 FXML 中对其进行初始化,请为 image 属性提供一个值。在 Scene Builder 中,您可以 select ImageView 并在右上角的 "Image" 字段中输入图像的 URL(在 "Properties" 下方)。请务必阅读 Image documentation 以了解如何解释 URL 的字符串表示形式。