图像调整大小以适应JPanel

问题描述:

我有JPanel将加载图像。图像调整大小以适应JPanel

由于图像的宽度和高度与JPanel不同,因此我想调整图像大小并适合JPanel。

+2

为更好地帮助越早用[SSCCE(http://sscce.org/)证明你的问题与图片编辑你的问题,JPanel的 – mKorbel

+0

您可以发布关于图像和JPanel的相关的代码? – CosminO

+0

我有一个扩展JPanel和使用paintComponent我插入图像上的类..ñ米通过构造函数中的图像路径。 – Azuu

阅读这篇文章,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);',这样做,现在你可以计算出它的高度和宽度。 –

我知道这是很老,但也许这可以帮助其他人

使用这个类来代替普通的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