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によって内包するコンポーネントの描画が呼び出される、という仕組みになっている。
[通知用URL]
Tweet
最終更新時間:2009年11月13日 18時48分29秒