2012-05-17 160 views
3

我有JPanel將加載圖像。圖像調整大小以適應JPanel

由於圖像的寬度和高度與JPanel不同,因此我想調整圖像大小並適合JPanel。

+2

爲更好地幫助越早用[SSCCE(http://sscce.org/)證明你的問題與圖片編輯你的問題,JPanel的 – mKorbel

+0

您可以發佈關於圖像和JPanel的相關的代碼? – CosminO

+0

我有一個擴展JPanel和使用paintComponent我插入圖像上的類..ñ米通過構造函數中的圖像路徑。 – Azuu

回答

10

閱讀這篇文章,The Perils of Image.getScaledInstance()

現在如果你還是喜歡你可以使用像,

Image scaledImage = originalImage.getScaledInstance(jPanel.getWidth(),jPanel.getHeight(),Image.SCALE_SMOOTH); 

這個圖像加載到你的JPanel之前,大概會喜歡討論in this answer

+0

但這裏的問題是我沒有得到jpanels的寬度和高度..我有擴展JPanel的類,我把圖像放在這個面板上。當我嘗試獲取寬度和高度時,它顯示0.0 – Azuu

+1

@Azuu:然後在使用'paintComponent(...)'方法進行覆蓋時,它將使用'getPreferredSize()',並返回一些值,例如'返回新的維(500,500);',這樣做,現在你可以計算出它的高度和寬度。 –

3

我知道這是很老,但也許這可以幫助其他人

使用這個類來代替普通的JLabel,並通過一個ImageIcon使用的setIcon(#)時;

private class ImageLabel extends JLabel{ 
    private Image _myimage; 

    public ImageLabel(String text){ 
     super(text); 
    } 

    public void setIcon(Icon icon) { 
     super.setIcon(icon); 
     if (icon instanceof ImageIcon) 
     { 
      _myimage = ((ImageIcon) icon).getImage(); 
     } 
    } 

    @Override 
    public void paint(Graphics g){ 
     g.drawImage(_myimage, 0, 0, this.getWidth(), this.getHeight(), null); 
    } 
} 
+1

這對我來說至少比上述更實用。我實際上寫了相同的類,但我沒有寬度和高度參數。謝謝。 –

+0

簡單。應該被標記爲答案。 – gdbj

相關問題