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}}