2013-08-17 50 views
0

我設計了一個簡單的表單。無法在JLabel中設置圖像

在其中我把一個面板作爲contentPane一個JLabel作爲lblPanel。

現在我想在JLabel中設置圖像。

我有WindowBuilder,所以我可以使用設置JLabel的圖標屬性直接設置圖像。

但是當我嘗試這個時,它顯示的圖像只是它的原始大小,這是很自然的,我們必須手動設置圖像大小來餵食整個JLabel。

所以,這裏是我使用JLabel的圖標屬性設置圖像時由WindowBuilder生成的代碼。

lblPanel.setIcon(new ImageIcon(Admin_Form.class.getResource("/Icons/MouthSmile.jpg"))); 

現在我的問題是我想設置圖像的大小作爲一個JLabel的大小,以便有任何直接的方式使用的WindowBuilder或僅修改上面的線什麼關係呢?

我也嘗試了以下方式,其中我採取了兩個Imageicon和一個圖像。

這是我已經嘗試過的代碼。

private Image img; 
private ImageIcon imgicon; 
private ImageIcon newimgicon; 

imgicon = new ImageIcon("/Icons/MouthSmile.jpg"); 
img = imgicon.getImage(); 

newimgicon = new ImageIcon(img.getScaledInstance(lblPanel.getWidth(),lblPanel.getHeight(), Image.SCALE_SMOOTH)); 
lblPanel.setIcon(newimgicon); 

但是,當我刪除窗口生成器生成的代碼,並只使用我的圖像不顯示。

我也看到了使用BufferedImage來做到這一點的方法,但我認爲不會有什麼區別,我將使用BufferedImage調整大小或ImageIcon和圖像。

+1

一個JLabel包含的圖標大小是這個圖標的大小。因此,如果您在圖標內部有任何圖標之前將圖標大小調整爲JLabel的大小,則圖像將調整爲0.您應該使用首選的圖像編輯工具並將圖像調整爲所需的尺寸,並且JLabel將會這個圖標的大小。此外,構建ImageIcon所生成的代碼是正確的。爲什麼你修改它到'新的ImageIcon(「/ Icons/MouthSmile.jpg」),這是錯誤的? –

+0

你能詳細說明我在做什麼錯嗎?「爲什麼你修改它爲新的ImageIcon(」/ Icons/MouthSmile.jpg「),這是錯誤的?」因爲我無法理解。 –

+1

您正在文件系統上加載文件'/ Icons/MouthSmile.jpg'中的圖像,該文件系統有100%的機會不存在於最終用戶的桌面上。相反,您應該像生成的代碼一樣,使用類加載器從類路徑(並從而從應用程序的jar或目錄)加載它。 –

回答

0

如果你想將其添加到您的Container和你JFrame是可見之前之前得到的lblPanel的寬度和高度,寬度和高度都將是0