2017-07-21 46 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