2017-07-21 45 views
1

我正在使用netbeans。我有一个项目目录是这样的:JavaFX - 无法在项目目录中加载图像

HTMLEdit/ 
     src/ 
      htmledit/ 
        - pic.png 
        - MyClass.java 

我试图让图像,但它返回null。我曾尝试这两种,但仍无法得到它的工作:

System.out.println(getClass().getResourceAsStream("/pic.png"));

System.out.println(getClass().getResourceAsStream("pic.png"));

是什么造成这种怪异的行为?

编辑:

看起来这是因为在项目创建时我选用JAVAFX Project。我通过选择Java Project重新创建该项目,它工作正常。可能是这是Netbeans的错误。

+0

第二个变体完美地工作。 – Mordechai

回答

1

当你做getClass().getResourceAsStream("/pic.png")然后将被视为访问该文件的URL将是一个绝对的URL。绝对URL由位于资源位置前面的斜线指示。

如果您执行getClass()。getResourceAsStream(“pic.png”),则将使用与类所在的包相关的资源。

因为你说过两个getResourceAsStream()语句在Netbeans中都不起作用,所以我在Netbeans中检查了下面的JavaFX代码,它完美地工作。

public class MyClass extends Application{ 
    @Override 
    public void start(Stage primaryStage) { 
     Pane root = new Pane(); 
     Image images = new Image(getClass().getResourceAsStream("pic.png")); 
     ImageView image = new javafx.scene.image.ImageView(images); 
     root.getChildren().add(image); 
     Scene scene = new Scene(root); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 

    } 



    public static void main(String[] args) { 
     launch(args); 
    } 

} 

这里是程序的结构和输出。 enter image description here

如果你想知道Netbeans版本,我使用的是Netbeans 8.0.2。 另外,请阅读以下文章。

Different ways of loading a file as an InputStream