我有一个JPanel,它将加载图像。
由于图像的宽度和高度与JPanel不同,我希望将图像调整大小并适应JPanel。
由于图像的宽度和高度与JPanel不同,我希望将图像调整大小并适应JPanel。
阅读这篇文章,Image.getScaledInstance()的危险之处
现在如果你仍然喜欢,你可以使用类似以下的方法:
Image scaledImage = originalImage.getScaledInstance(jPanel.getWidth(),jPanel.getHeight(),Image.SCALE_SMOOTH);
在将图像加载到您的JPanel之前,可能需要像此答案中所讨论的那样进行处理。
getPreferredSize()
方法,就像你在paintComponent(...)
方法中所做的那样,并让它返回一些值,例如return new Dimension(500, 500);
,这样就可以计算出它的高度和宽度了。 - nIcE cOw虽然这个问题有些老,但或许对其他人仍有帮助。
在使用 setIcon(#) 时,使用这个类代替普通的 JLabel,并传递一个 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);
}
}