2015-09-19 86 views
1

我正尝试使用它的Image类在JavaFX中加载图像。在JavaFX中加载图像

这里是我的代码:

Image image = new Image(file.getAbsolutePath()); 

file只是加载图像文件。

我收到以下错误:

java.lang.IllegalArgumentException: Invalid URL or resource not found

下面是完整的代码:

FileChooser fileChooser = new FileChooser(); 
fileChooser.getExtensionFilters().addAll(
     new FileChooser.ExtensionFilter("JPG","*.jpg"), 
     new FileChooser.ExtensionFilter("JPEG","*.jpeg") 
); 
fileChooser.setTitle("Choose file..."); 
fileChooser.setInitialDirectory(
     new File(System.getProperty("user.home")) 
); 
File file = fileChooser.showOpenDialog(stageOfEvent); 

if(file != null) { 
    Image image = new Image(file.getAbsolutePath()); 
    imageView.setImage(image); 
} 

回答

2

为了构建一个Image与位于文件系统中的文件,你需要使用file:协议,像这样:

Image image = new Image("file:" + file.getAbsolutePath()); 

没有指定我t告诉JavaFX在类路径中查找图像,而不是在文件系统中查找。

引用图像的Javadoc:

// The image is located in my.res package of the classpath 
Image image2 = new Image("my/res/flower.png", 100, 150, false, false); 

// The image is located in the current working directory 
Image image4 = new Image("file:flower.png", 0, 100, false, false); 

这个构造来自URL语法的Java。

正如在评论中指出@mipa,你也可以使用:

Image image = new Image(file.toURI().toURL().toExternalForm()); 
+0

是这个平台独立吗? –

+0

@TrtTrt你为什么这么认为?不它不是。 – Tunaki

+0

好的,有什么建议如何做到的? –