我想在对话框窗口中显示图像(保存在项目文件夹中),但是当我运行我的方法showDialogWithImage时,我得到FileNotFoundExcpetion:imgs \ pic1.jpg(系统找不到指定的文件),尽管图像位于那里 .
我也试过这种方式加载图片:
Image image = new Image(getClass() . getResourceAsStream(path));,但是遇到了同样的问题 .
是否有其他可能性将图像加载到ImageView?
谢谢你的帮助!
-
我的Java代码位于项目文件夹中的src \ myProject \ gui中 .
-
path =“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();
}
2 回答
getClass().getResourceAsStream(path)
将从调用类的位置开始其文件搜索 . 因此,通过使用此路径"imgs\pic1.jpg"
,您说这是您的文件结构要使搜索遍历,需要在
imgs
之前添加额外的分隔符 . 所以另外,我认为当你使用反斜杠作为分隔符时,你需要逃避它 . 所以
或者只是使用正斜杠
另一个选择是使用类加载器,它将从根搜索,您不需要开始分隔符
当您使用路径加载图像时,您需要将分隔符文件“\”替换为“/”