作者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
推 kanandg1:resize時他會重繪(縮到最小再放大也會) 02/20 17:34
→ howardwang:那可以避免嗎?除了frame.setResizable(false)外。 02/20 17:46
推 chchwy:重繪的時機是由系統決定的阿 你要不要說明一下不想印的原因 02/20 19:02
→ howardwang:是想了解為何首次執行時會進去paintComponent兩次 02/20 22:42
推 chchwy:我的建議是不要去數paint幾次 因為你無法控制 02/21 15:57
→ chchwy:然後程式邏輯跟繪圖分開來寫 02/21 15:58