我的一位朋友要求我幫助他與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