2012-02-20 48 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