2014-01-17 43 views
1

我在我的Jframe中有一個圖像圖標。我在其中使用一個圖像。當我導出到一個Runnable Jar.The圖像不顯示。如何讓資源在可運行的jar中工作?

String iPath = "res/images/Mobile.png"; 
JLayeredPane layeredPane = new JLayeredPane(); 
layeredPane.setBounds(0, 0, 315, 610); 
InputStream stream = (InputStream) getClass().getResourceAsStream(iPath); 
JLabel mobileImageLabel; 
mobileImageLabel = new JLabel(new ImageIcon(iPath)); 

      //mobileImageLabel = new JLabel(new ImageIcon(ImageIO.read(stream))); 
     // mobileImageLabel = new JLabel(new ImageIcon(AppFrame.class.getResource(iPath))); 

        mobileImageLabel.setBounds(0, 0, 315, 610); 
        mobileImageLabel.setVisible(true); 
        layeredPane.add(mobileImageLabel, Integer.valueOf(0)); 

我GOOGLE了&發現的getResourceAsStream method.But似乎拋出NullPointerException。

所以幫我在正確的方向:)

感謝您的幫助......

注意 我試過的方法進行了報道

+0

我也有同樣的問題,最好在另一個系統上嘗試getResourceAsStream方法。 – ashokramcse

+1

使用zip應用程序(f.e. 7-zip)打開runnable.jar,並查看文件是否包含在jar和各自的目錄中。通常,錯誤的設置會阻止將資源包含到jar中。 –

+0

請參閱[tag:embedded-resource]信息。 – trashgod

回答

0

要在按鈕設置圖像我這樣做:

JButton yourButton = new JButton("text button"); 
     try { 
      yourButton.setIcon(new ImageIcon(ImageIO.read(getClass().getResourceAsStream("/images/icon-for-your-button.png")))); 
     } catch (IOException e3) { 
      // TODO Auto-generated catch block 
      e3.printStackTrace(); 
     } 

您必須在您的項目中有像這樣的圖像:

enter image description here

在你的情況,我想答案是這樣做:

new ImageIcon(ImageIO.read(getClass().getResourceAsStream("/images/icon-for-your-button.png"))) 
0

嘗試更換

String iPath = "res/images/Mobile.png"; 

通過

String iPath = "C:/..../res/images/Mobile.png"; 

每當你與ima一起工作ges試圖爲圖像提供完整的路徑。所以當你生成你的.jar文件並嘗試從不同的地方運行它時(可能你希望這個jar應該從桌面運行),你會得到所有的圖像。

相關問題