作者howardwang (Howard)
看板java
标题[问题] 为何刚执行时会进去paintComponent两次?
时间Sun Feb 20 17:28:25 2011
因为对Swing和绘图不熟,
google之後,也找不到原因(可能是因为很简单?)
所以想请教一个基本的问题,
就是为何以下黄色叙述,在程式一开始执行的时候会印2次?
以及在resize frame时,也会印?
先谢谢了!
class MyDrawing extends JPanel {
@Override
public void paintComponent(Graphics g) {
System.out.println("################");
// 为什麽上一行会印两次? 以及为何resize frame时, 也会印?
super.paintComponent(g);
g.drawLine(100, 100, 200, 200);
}
public static void main(String[] args) {
MyDrawing drawing = new MyDrawing();
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
drawing.setPreferredSize(new Dimension(450, 450));
frame.getContentPane().add(drawing);
frame.pack();
frame.setVisible(true);
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 115.43.149.14
1F:推 kanandg1:resize时他会重绘(缩到最小再放大也会) 02/20 17:34
2F:→ howardwang:那可以避免吗?除了frame.setResizable(false)外。 02/20 17:46
3F:推 chchwy:重绘的时机是由系统决定的阿 你要不要说明一下不想印的原因 02/20 19:02
4F:→ howardwang:是想了解为何首次执行时会进去paintComponent两次 02/20 22:42
5F:推 chchwy:我的建议是不要去数paint几次 因为你无法控制 02/21 15:57
6F:→ chchwy:然後程式逻辑跟绘图分开来写 02/21 15:58