看板 java 關於我們 聯絡資訊
因為對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