加载图像到ImageView JavaFX
问题描述:
我想在对话窗口中显示图像(保存在项目文件夹中),但是当我运行我的方法showDialogWithImage时,我得到FileNotFoundExcpetion:imgs \ pic1.jpg(系统找不到指定的文件),虽然图像位于那里。加载图像到ImageView JavaFX
我也试过在这种方式加载图像:
Image image = new Image(getClass()。getResourceAsStream(path));, but got the same problem。
是否有其他一些可能性将图像加载到ImageView?
谢谢你的帮助!
我的Java代码位于项目文件夹中的src \ myProject \ gui中。
路径= “IMGS \ pic1.jpg” // IMGS位于项目文件夹
public void showDialogWithImage(String path) {
final Stage dialogStage = new Stage();
logger.info(path);
InputStream is = null;
try {
is = new FileInputStream(path); // here I get FileNotFoundException
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Image image = new Image(is);
ImageView view = new ImageView();
view.setImage(image);
Button btnOK = new Button("OK");
btnOK.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
dialogStage.close();
}
});
dialogStage.initModality(Modality.WINDOW_MODAL);
dialogStage.setScene(new Scene(VBoxBuilder.create()
.children(view, btnOK).alignment(Pos.CENTER)
.padding(new Insets(35)).build()));
dialogStage.show();
}
答
getClass().getResourceAsStream(path)
将开始从调用类的位置,它的文件搜索。因此,通过使用此路径"imgs\pic1.jpg"
,你说这是你的文件结构
src\myProject\gui\imgs\pic1.jpg
让搜索穿越回去,你需要imgs
之前额外的分隔符。所以
"\imgs\pic1.jpg"
另外,我认为当你使用反斜杠作为分隔符,你需要逃避它。所以
"\\imgs\\pic1.jpg
或者只是使用斜线
"/imgs/pic1.jpg
另一种选择是使用一个类装载器,将从根本,在这里你不需要一开始分离
getClass().getClassLoader().getResourceAsStream("imgs/pic1.png");
搜索
答
当您加载带路径的图像时,需要用“/”替换分隔符文件“\”,例如
String ImageName="MyImage.png";
File file = new File("src\\Messages\\Attachements\\Images");
try {
if (!file.exists()) {
FileUtils.forceMkdir(file);
}
}
} catch (Exception io) {
io.printStackTrace();
}
Image image = new Image("/Messages/Attachements/Images/"+ImageName=);
ImageReceived.setImage(image);