2015-10-20 60 views
0

我已經創建了的Java Swing GUI和想根據我的模塊創建一個自定義工具欄自定義工具欄。以下是圖像我想要使用:用的Java Swing桌面

enter image description here

這些圖像被放置在相同的水平我的應用程序內的src文件夾。我知道,我也許可以創建這些圖像的罐子,這樣我可以很容易地從我的應用程序中訪問他們,但不知道怎麼辦。我花了數小時試圖做這項工作。

下面是我的GUI,我創建的廣告想用這些圖像的工具欄美化別人創建標籤將充當導航但是這兩種方式我無法得到它的工作的數組。下面

enter image description here

的代碼是我在這最後的嘗試:

JToolBar toolbar1 = new JToolBar(); 

ImageIcon client = new ImageIcon("clients.png"); 
ImageIcon timesheet = new ImageIcon("timesheets.png"); 

JButton clientTB = new JButton(client); 
JButton timesheetTB = new JButton(timesheet); 

toolbar1.add(clientTB); 
toolbar1.add(timesheetTB); 

add(toolbar1, BorderLayout.NORTH); 

我甚至感動這些圖像,放在他們的呼喚它們的類內。

什麼可能我是做錯了,請幫助?

回答

2

你看看的JavaDoc ImageIcon(String),該String值是「字符串指定文件名或路徑」

這是一個問題,因爲你的圖像是不實際的文件,更多的,他們已經嵌入您的應用程序(通常在生成的JAR文件)內,不再像「正常文件」處理。

相反,你需要使用哪個Class#getResource搜索應用程序的類路徑命名資源,像...

// This assumes that the images are in the default package 
// (or the root of the src directory) 
ImageIcon client = new ImageIcon(getClass().getResource("/clients.png")); 

現在,我有一個個人的厭惡ImageIcon,因爲它不會告訴你當圖像由於某種原因被加載時,例如無法找到或者格式不正確。

相反,我會使用ImageIO讀取圖像

ImageIcon client = new ImageIcon(ImageIO.read(getClass().getResource("/clients.png"))); 

這將做兩件事情,第一,它會拋出一個IOException如果圖像無法加載由於某種原因而二,它直到圖像完全加載纔會返回,這很有幫助。

更多細節

+0

感謝@MadProgrammer這個工作就像一個魅力見Reading/Loading an Image ..... :-)我現在是一個快樂掃平。 :d – Maximum86

+0

很高興它可以幫助;) – MadProgrammer