JavaFX ImageView через FXML не работает

у меня проблема с загрузкой изображений с ImageView на FXML-файл.

мой класс контроллера:

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:

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

Я смущен, почему это не работает, потому что метка работает, но изображение не загружается.
Я также проверил, есть ли boximage не равно null, но это не так. Исключений тоже нет.

2 ответов


возможно, это проблема местоположения исходного изображения. Согласно комментариям на этот сайт С "Максим", если вы используете new Image("boximage.jpg");, корневой каталог-это основная папка проекта и e.g для 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>

это работает:

BufferedImage bufferedImage;
bufferedImage = ImageIO.read(new File(this.path));
Image image = SwingFXUtils.toFXImage(bufferedImage, null);
this.boximage.setImage(image);