トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

paint と paintComponent

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によって内包するコンポーネントの描画が呼び出される、という仕組みになっている。

[カテゴリ: プログラミング言語 > Java]

[通知用URL]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2009年11月13日 18時48分29秒