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);