2012-02-20 24 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つです。 1+ –

関連する問題