2013-04-08 47 views
2

我試圖訪問我的Java代碼中的一些圖像。下面是調用圖像的代碼。訪問Eclipse中的圖像路徑

public final ImageIcon whitePiece = new ImageIcon(getClass().getResource("Images/whitecircle.PNG")); 
public final ImageIcon blackPiece = new ImageIcon(getClass().getResource("Images/blackcircle.png")); 
public final ImageIcon tiePiece = new ImageIcon(getClass().getResource("Images/tiecircle.PNG")); 
public final ImageIcon boardPic = new ImageIcon(getClass().getResource("Images/gameboard.PNG")); 

然而,這將返回以下錯誤:

Exception in thread "main" java.lang.NullPointerException 
    at javax.swing.ImageIcon.<init>(Unknown Source) 
    at jared.othello.GameInterface.<init>(GameInterface.java:26) 
    at jared.othello.Main.main(Main.java:22) 

線26上面的代碼中的第一行。我幾乎肯定我的文件目錄命名有問題,但我無法弄清楚有什麼問題或如何解決它。我已經建立了我的項目中名爲「圖像」源文件並放在影像的文件夾中,像這樣:

Project Configuration

我在做什麼錯,什麼是正確的文件名語法?謝謝!

+1

你需要在圖像路徑中領先的'/'? – 2013-04-08 21:52:36

+0

不,我把它拿出來了,但代碼仍然不起作用。 – 2013-04-08 21:55:06

+0

您需要創建另一個源路徑,並將圖像文件夾放在其中。然後確保Eclipse將這些資源包含在已編譯的工件中,因爲有時候Eclipse會添加一些過濾器來阻止某些文件出現在您的構建中。 – 2013-04-08 21:56:21

回答

5

你應該有一個名爲Images的文件夾的資源文件夾,那麼它應該工作。

例子:

enter image description here

我如何訪問這些圖標:

public BufferedImage icon32 = loadBufferedImage("/icon/icon32.png"); 
public BufferedImage icon64 = loadBufferedImage("/icon/icon64.png"); 

private BufferedImage loadBufferedImage(String string) 
{ 
    try 
    { 
     BufferedImage bi = ImageIO.read(this.getClass().getResource(string)); 
     return bi; 
    } catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
    return null; 
} 
+0

我試過了(看我的編輯),它似乎沒有工作。任何想法爲什麼? – 2013-04-08 21:59:59

+0

然後你的文件樹應該看起來與我答案中的極其相似,並且每個文件夾圖標都應該是相同的。另外,訪問它們時應該有'/'前導。 – syb0rg 2013-04-08 22:03:40

+3

領先的'/'必需? – 2013-04-08 22:04:44

1

嘗試導入圖像的路徑是你 「的.java」 源文件的位置。在eclipse中嘗試以下內容: 右鍵點擊你的「.java」文件,選擇Import-> File System-> From Directory(提供圖像所在的路徑) - >選擇圖像,然後單擊Finish。

您可以看到「.java」源所在路徑中列出的圖像。您可以在代碼中直接使用圖像文件名稱。 謝謝, P