我在使用FXML上的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
是否为空,但事实并非如此。也没有例外。
答案 0 :(得分:12)
可能它是源图像位置问题。根据{{3}}的评论,来自 &#34; Maxim&#34; ,如果您使用new Image("boximage.jpg");
,则根目录为< em>主项目文件夹,例如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>
答案 1 :(得分:4)
这有效:
BufferedImage bufferedImage;
bufferedImage = ImageIO.read(new File(this.path));
Image image = SwingFXUtils.toFXImage(bufferedImage, null);
this.boximage.setImage(image);