5

我有 JPanel,它将加载图像。

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

4

2 回答 2

11

阅读这篇文章Image.getScaledInstance() 的危险

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

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

在将图像加载到您的 JPanel 之前,这可能就像在这个答案中讨论的那样。

于 2012-05-17T11:10:44.157 回答
6

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

使用这个类而不是普通的 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);
    }
}
于 2015-01-29T23:41:31.390 回答