libro
www.tuyano.com
初心者のためのJava SEプログラミング入門

グラフィックの描画 (2/6)

作成:2010-01-14 16:34
更新:2010-01-14 16:34

■paintメソッドとGraphics

では、ソースを見てみましょう。――まず、Test9クラスの中で行なっているのは、コンストラクタで「MyCanvas」というクラスのインスタンスを作り、これをaddするという作業だけです。まあ、この部分は今まで何度もやってきましたからわかりますね。

このMyCanvasが、描画用のクラスです。このクラスは、Test9クラスの中に内部クラスとして定義されていますね。ちょと見てみましょう。

    class MyCanvas extends Canvas {
    
        public void paint(Graphics g) {
            g.drawOval(50,50,100,75);
            g.drawRect(100,100,100,75);
        }
    }

こんな感じのものです。MyCanvasは、CanvasというAWTのクラスを継承して作ります。ですから、extends Canvasとなっているわけですね。

その中には、1つだけメソッドが用意されていますね。これが「描画用メソッド」です。このpaintというメソッドは、このコンポーネントが画面に表示したり再描画したりする必要が生じると、コンポーネント自体の様々な表示の処理を行なったとに、最後に呼び出されるようになっています。従って、このpaintメソッドに描画の処理を書いておけば、それはどんな場合でも常にコンポーネントに表示されるようになるのです。

では、このメソッドの中でどうやって描画を行なわせるのか。それが「g.drawOval~」「g.drawRect~」という2行のメソッドです。これらは、いずれも「g」ってもののメソッドのようですね? このgとは何でしょう?

メソッドのパラメータ部分を見ると、「paint(Graphics g)」とあります。つまりこのgは、Graphicsというクラスのインスタンスだったわけです。そしてこのGraphicsこそが、AWTの描画一切を引き受けるものだったのです。

Graphicsは、「描画用の様々な機能を全てまとめ、それらを呼び出すことで実際に画面に表示が行なわれるようにしたもの」です。まあ、わかりやすくいえば「描画担当クラス」ってことですね。AWTのコンポーネントのクラスには、全てこのGraphicsが組み込まれていて、描画を担当しています。そう、Canvasだけでなくて、あらゆる部品の「描画の素」なのです。

コンポーネントに何かを表示させるには、そのコンポーネントに組み込まれているGraphicsを取り出し、その中の描画用メソッドを呼び出してやります。そうすると、そのコンポーネントに実行した図形などが表示される、という具合になっています。

ということは、このpaintメソッドで渡されるgっていうのは…? そう、このMyCanvasに設定されているGraphicsのインスタンスがパラメータとして渡されていた、というわけです。今回使った「drawOval」「drawRect」は、それぞれ円と四角を描くメソッドです。こうやって渡されたgインスタンスのメソッドを呼び出すことで、描画を行えるようになっていたのですね。

描画用のメソッドというのは、他にもたくさんあります。とりあえず主なものを整理しておきましょう。これらを一通り覚えれば、簡単な図形なら描けるようになりますよ。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

・枠線だけの四角形を描く
drawRect(横位置, 縦位置, 横幅, 縦幅)

・枠線だけの円を描く
drawOval(横位置, 縦位置, 横幅, 縦幅)

・塗りつぶした四角形を描く
fillRect(横位置, 縦位置, 横幅, 縦幅)

・塗りつぶした円を描く
fillOval(横位置, 縦位置, 横幅, 縦幅)

・2点を結ぶ直線を描く
drawLine(横位置1, 縦位置1, 横位置2, 縦位置2)

・テキストをグラフィックとして描く
drawString(テキスト, 横位置, 縦位置)
※関連コンテンツ

「初心者のためのJava SEプログラミング入門」に戻る