我設計了一個簡單的表單。無法在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和圖像。
一個JLabel包含的圖標大小是這個圖標的大小。因此,如果您在圖標內部有任何圖標之前將圖標大小調整爲JLabel的大小,則圖像將調整爲0.您應該使用首選的圖像編輯工具並將圖像調整爲所需的尺寸,並且JLabel將會這個圖標的大小。此外,構建ImageIcon所生成的代碼是正確的。爲什麼你修改它到'新的ImageIcon(「/ Icons/MouthSmile.jpg」),這是錯誤的? –
你能詳細說明我在做什麼錯嗎?「爲什麼你修改它爲新的ImageIcon(」/ Icons/MouthSmile.jpg「),這是錯誤的?」因爲我無法理解。 –
您正在文件系統上加載文件'/ Icons/MouthSmile.jpg'中的圖像,該文件系統有100%的機會不存在於最終用戶的桌面上。相反,您應該像生成的代碼一樣,使用類加載器從類路徑(並從而從應用程序的jar或目錄)加載它。 –