paintメソッドとGraphicsクラス

広告

まずpaintメソッドについて見ていきます。paintメソッドはもともとAppletクラスで定義されている(実際にはAppletクラスのさらに親クラスであるContainerクラスで定義されています)もので、アプレットが表示されようとする時に自動的に呼ばれるメソッドです。

例えばアプレットが最初に表示される時や、アプレットが動いているブラウザを一度アイコン化して改めて普通のサイズに戻した時にもいったんブラウザ上で表示されているアプレットは画面上に表示されなくなってから再度表示されることになりますので、このメソッドが呼ばれることになります。そしてアプレットは表示が再度必要だなと判断した時に、paintメソッドの中に記述されている描画を行おうとします。

その為、このメソッドはプログラムを行う側で直接呼び出すようなメソッドではありません。アプレットが再描画が必要になったと判断した時に自動的に呼ばれるものです。特に何もしなければアプレットはアプレットの領域を決められた背景色で塗りつぶして終わりです。

そこで再描画される時に呼び出されるこのpaintメソッドの中身を書き換えてやることで、アプレットが表示される時、アプレットにこちらの意図したものを描画されることが出来るわけです。

前に使ったサンプルをもう一度見てください。

public class AppletTest2 extends Applet{
  public void paint(Graphics g){
    g.setColor(Color.red);

    Dimension size = getSize();
    g.fillRect(0, 0, size.width - 1, size.height - 1);

    g.setColor(Color.white);
    g.drawString("Hello", 10, 50);
  }
}

paintメソッド内に色々書いています。このpaintメソッド内に書かれた内容をアプレットは表示が必要だなと判断した時に実行してくれるわけです。(改めて書きますが、このメソッドはプログラム側で直接呼び出すわけではありません。アプレット側が必要と判断した時に勝手に呼び出されるメソッドです)。

このサンプルでは、色を指定し、画面全体を塗りつぶし、別の色を指定し、指定した位置に文字を描画するように指示しています。色々描画するように指示しているわけですが、その対象となるのがpaintメソッドの引数として渡されてくるGraphicsクラスのオブジェクトです。

public void paint(Graphics g){
    // ...
}

このGraphicsクラスのオブジェクトは正式にはグラフィックスコンテキストと言いますが、あまり呼び方は気にしないで構いません。このオブジェクトに描画を指示すると、ディスプレイ上の適切な位置に実際に表示してくれる仲介をしてくれる便利なものです。

そこでGraphicsクラスについて見てみます。

  • java.lang.Object
  • java.awt.Graphics
  • public abstract class Graphics extends Object

このクラスは直接自分でオブジェクトを作成するのではなく、アプレットの内部で作成されたGraphicsクラスのオブジェクトがpaintメソッドの引数として渡してくれますので、そのオブジェクトを利用します。

Graphicsクラスには、色々な図形を描画したり、文字を書いたり、色を指定したり、といった多くのメソッドが用意されており、簡単にアプレット上に図形を描画できるようになっています。次の頁からGraphicsクラスの使い方を詳しく見ていきます。

( Written by Tatsuo Ikura )