2017-02-22 142 views
1

我正試圖在JavaFX中重建俄羅斯方塊。 我的項目名爲TetrisProject(C:\Users\Matthias\IdeaProjects\OOPROG\TetrisProject相對路徑不起作用

Inside Main有一個獲取資源的問題。 (C:\Users\Matthias\IdeaProjects\OOPROG\TetrisProject\tetris\src\be\kdg\tetris\Main.java

public class Main extends Application { 
    primaryStage.getIcons().add(new Image("tetris\\resources\\images\\icon.png") 
} 

icon.png是我想爲我的窗口設置圖標。 (C:\Users\Matthias\IdeaProjects\OOPROG\TetrisProject\tetris\resources\images\icon.png

tetris\\resources\\images\\icon.png應該是相對路徑自

File f = new File("."); 
System.out.println(f.getAbsolutePath()); 

內部Main.java運行輸出C:\Users\Matthias\IdeaProjects\OOPROG\TetrisProject\

我爲icon.png寫的相對路徑是正確的,對吧?

回答

2

該路徑不是文件路徑,而是該資源的URL。

documentation說:「如果傳遞的字符串不是有效的URL,而是一種路徑,而不是,圖像搜索在這種情況下,類路徑。」想必resources是源文件夾中,這樣的路徑將需要簡單地images/icon.png

primaryStage.getIcons().add(new Image("images/icon.png")); 

您可以通過看什麼是在輸出檢查/建設/ bin文件夾(無論您的IDE調用它)。根據您的IDE配置如何處理資源目錄,應該在那裏複製映像,這就是構造函數將在運行時查看的位置。 (顯然,您的源文件夾通常無法在運行時訪問。)

+0

它的工作原理!非常感謝你,我不知道這樣做的道路。 – m4t5k4

+1

它在文檔中。你應該知道文檔說的是什麼。 –

+0

@LewBloch我只看到了一個如何在學校使用Image的例子,在這種情況下,圖像與java類在同一個目錄中。我們的老師甚至沒有解釋Image通過URL或classpath獲取資源。 你的行爲就像我有責任閱讀Java中的所有文檔。 – m4t5k4