目次へ

12.2. 再描画

コンポーネントの再描画を行いたい場合も考えられます。例えばコンポーネントのサイズ一杯に表示している図形を、ウィンドウのサイズが変わる毎に応じて変えたい場合も考えられます。その場合は再描画させたいコンポーネントの「repaint」メソッドを呼びます。「repaint」は「JComponent」クラスの祖先である「java.awt.Component」クラスのメソッドです。

「repaint」メソッドは内部処理としては「paint」メソッドを呼び出します。したがって「repaint」メソッドを呼び出せば、結果的に「paint」メソッドを呼び出すことができると考えれば良いでしょうか。しかしSwingコンポーネントは1つ特長があって、「repaint」メソッドを呼び出しても背景をクリアする事はしません。つまり前に「paint」メソッドによって描画された図形に、更に上書きするように描画を行います。一旦、背景をクリアしたい場合は以下のようにします。

public void paint(Graphics g){
  Dimension dim=getSize();
  g.setColor(getBackground());

  g.fillRect(0,0,dim.width,dim.height);
  g.setColor(getForeground());
  
  (以降の描画処理)
}

(実習課題2)

実習課題1のプログラムを改良しなさい。

  • ウィンドウのサイズを変えるごとに、正六角形のサイズをパネルのサイズにちょうど合うように変える事。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp