2012-02-20 82 views
3

我有以下代碼:爲什麼paintComponent被執行2次?

 canvas=new MembershipFunctionComponent(functions); 
     canvas.setPreferredSize(new Dimension((int)this.getWidth(), (int)this.getHeight())); 
     canvas.addMouseListener(canvas); 
     pane.add(canvas); 

MembsershipFunctionComponent擴展JComponent的。爲什麼paintComponent方法執行2次?

回答

4

paintComponent可以在任何時候被Swing框架調用。一個組件(在可滾動窗口例如)調整大小

  • 組件的任何時間部分顯露
  • 任何時間在任何時間重繪()方法被調用

    • :時這可能發生的例子在您的組件(也可能是父母或子組件)
    • 任何時候有一個佈局變化

    無本應擔心你 - 你應該只寫你的代碼,因此它並不怎麼在意多次痛苦tComponent被調用。

  • +2

    恰恰是程序邏輯不應該駐留在此方法中的一個原因。 1+ – 2012-02-20 02:23:47