http://questionbox.jp.msn.com/qa5266962.html
awt と swing コンポーネントの描画関数の違い。
!awt
*Panel や Frame、Canvas を継承して paint メソッドをオーバーライドする。
*updateメソッドは、画面のクリアを行う(クリアしたくない場合は、オーバーライドする)
*ダブルバッファリングはプログラマが行う
!swing
*JPanel を継承して paintComponent をオーバーライドする。
*paintComponent内では、 super.paintComponent を呼んだ方が無難。
*updateメソッドは、画面のクリアを行わない
*コンポーネント側でダブルバッファリングを行う(不要な場合は setDoubleBuffered で設定する)
以下、理由
Swingでは、コンポーネントの描画はかなり複雑になっている。AWTでは、repaintが呼ばれると、 updateが呼ばれた後、paintが呼ばれる。が、Swingでは、paing内で更にpaintComponentによってコンポーネントが描画され、それからpaintBorderでボーダーが描画され、最後にpaintChildrenによって内包するコンポーネントの描画が呼び出される、という仕組みになっている。
{{category2 プログラミング言語,Java}}