图像调整大小以适合JPanel

时间:2012-05-17 10:59:23

标签: java image swing jpanel

我有JPanel,它会加载图像。

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

2 个答案:

答案 0 :(得分:11)

阅读本文The Perils of Image.getScaledInstance()

现在如果您仍然喜欢,您可以使用类似

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

这是在将图像加载到JPanel之前,可能与讨论in this answer一样。

答案 1 :(得分:5)

我知道这已经很老了,但也许这有助于其他人

使用此类而不是普通的JLabel,并在使用setIcon(#)时传递ImageIcon;

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);
    }
}