JavaのAWTによる描画について調べてみたところ、こんなに良い記事がありました。
Painting in AWT and Swing
ここにAWTを使うときのガイドラインがありましたので、意訳して紹介しておきます。
- 基本的には(updateメソッドではなくて)paintメソッドに描画処理を記述すること(updateメソッドはオーバーライドされていなければpaintメソッドを呼ぶので何もかかなくてよい)
- paintメソッドを直接呼ぶのではなく、repaintメソッドを呼ぶこと
- 複雑な描画処理をする場合は影響範囲を限定するために、パラメータつきのrepaintメソッド(たとえば public void repaint(int x, int y, int width, int height)など)を呼ぶこと
- repaintメソッドは内部的にupdateメソッドを呼びますから、paintメソッドで描画された結果へ重ねて描画することをしたいなら、updateメソッドをオーバーライドすること
- java.awt.Containerのpaintメソッドをオーバーライドするときは、(最後に)super.paintメソッドを呼び出すこと
- 複雑な描画をするComponentでは描画対象領域を狭めるためにクリップ領域の指定を上手に利用すること