通过FXML的JavaFX ImageView不起作用

前端之家收集整理的这篇文章主要介绍了通过FXML的JavaFX ImageView不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在使用F XML上的ImageView加载图像时遇到问题.

我的控制器类:

public class BoxViewController {
    @FXML
    private Label label_BoxID;

    @FXML
    private ImageView Boximage;

    public void initData(ObservableList<BoxProperty> observableList,BoxService sBox,TableView tableview) {
        this.label_BoxID.setText(
            String.valueOf(this.Boxproperty.getPBoxid()));

        Image image = new Image("Boximage.jpg");
        this.Boximage = new ImageView();
        this.Boximage.setImage(image);
    }
}

因此,使用文本设置标签有效,但图像不会出现在我的ImageView中.
对于ImageView,我在FXML文件添加了一个ID:

<ImageView fx:id="Boximage" 
            disable="false" 
            fitHeight="150.0" fitWidth="200.0"
            layoutX="69.0" layoutY="322.0" 
            pickOnBounds="true" 
            preserveRatio="true" />

我很困惑,为什么这不起作用,因为标签工作,但图像不会加载.
我还检查了Boximage是否为空,但事实并非如此.也没有例外.

解决方法

也许这是源图像位置问题.根据 this website评论,来自“Maxim”,如果你使用新的Image(“Boximage.jpg”);,根目录是主项目文件夹,例如用于scene.getStylesheets().add(“login.css” );根文件夹是src.
也许你可以试试这个:
Image img = new Image("file:Boximage.jpg");
ImageView imageView = new ImageView(img);

尝试将源图像移动到此代码的主项目文件

仅用于测试目的,尝试从FXML加载该图像:

<ImageView id="BoxImage" ...>    
   <image>
      <Image url="@Boximage.jpg" />
   </image>
</ImageView>

猜你在找的Java相关文章