想问一下为什麽paintComponent会执行二次?
java吧
全部回复
仅看楼主
level 8
kanonmoon 楼主
public class Practice5 extends JPanel {
public static void main(String[] args) {
System.out.println("111");
Practice5 panel = new Practice5();
JFrame application = new JFrame();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.add(panel);
application.setSize(250, 250);
application.setVisible(true);
}
public void paintComponent(Graphics g) {
System.out.println("222");
super.paintComponent(g);
int width = getWidth();
int height = getHeight();
g.drawLine(0, 0, width, height);
g.drawLine(0, height, width, 0);
System.out.println("333");
}
}

2012年07月31日 03点07分 1
level 8
kanonmoon 楼主
结果却印出
111
222
333
222
333
为什麽?
2012年07月31日 03点07分 2
level 16
记得第一次显示时,的确是会调用两次
2012年07月31日 03点07分 3
还是不明白。。所以为什麽会调用两次 是因为这个程式写得不好?
2012年07月31日 03点07分
level 12
应该是取决于窗口显现的动画,以不同的透明度绘制多次吧
2012年07月31日 03点07分 4
……但是貌似最小化再最大化的时候,只调用一次耶,那个时候不是也有“动画”嘛 [思考]
2012年07月31日 03点07分
@windsun_ul 呃,最大化也是调用两次(Win7),不过那个动画的确是不止两祯啊... ... [啊!]
2012年07月31日 03点07分
@windsun_ul 呃,会不会是因为双缓存?
2012年07月31日 03点07分
@那十无忧 如果因为这个……那不是每次都应该是调用两次……
2012年07月31日 03点07分
level 8
kanonmoon 楼主
所以呢 为什麽会调用两次
2012年07月31日 04点07分 5
1