我的一位朋友要求我帮助他与Swing,并且我达到了无法解决问题的程度。 所以,首先我有一个ImagePanel图像面板没有重新绘制,除非系统事件
public class ImagePanel extends JPanel {
private Image img;
public void setImage(String img) {
setImage(new ImageIcon(img).getImage());
}
public void setImage(Image img) {
int width = this.getWidth();
int height = (int) (((double) img.getHeight(null)/img.getWidth(null)) * width);
this.img = img.getScaledInstance(width, height, Image.SCALE_SMOOTH);
}
@Override
public void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, null);
}
}
而一个FileChooser
,应打开所选图像到ImagePanel。它简单地称为ImagePanel
的setImage
。但图像没有画。没有重新组合,验证和无效的帮助。
但是,当调整大小(使用鼠标)JFrame
时,图像被绘制。 所以,问题是 - 什么方法调用大小(使用鼠标),这使得ImagePanel
成功重新绘制。
您是否设置了JFrame?如果你这样做,你可以发布代码吗? – 2009-12-01 20:57:04
JFrame由NetBeans生成,所以我发现粘贴生成的代码很奇怪。当然,ImagePanel被添加到JFrame中。 – Bozho 2009-12-01 21:20:21