使用 SceneBuilder 显示图像
Display an image with SceneBuilder
我用 SceneBuilder、3 个按钮和 2 个 ImageView 创建了一个小的 FXML 文件。
我想做的是:
- 运行 应用程序并在启动时显示 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 的字符串表示形式。
我用 SceneBuilder、3 个按钮和 2 个 ImageView 创建了一个小的 FXML 文件。
我想做的是:
- 运行 应用程序并在启动时显示 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 的字符串表示形式。