我有JPanel,它会加载图像。
由于图像的宽度和高度与JPanel不同,我想让图像调整大小并适合JPanel。
答案 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);
}
}