Javaプログラミング/Javaの基本

グラフィックを描画しよう(2ページ目)

AWTでは「Graphics」というクラスを使ってさまざまな図形を描画できます。このクラスの基本を覚えましょう。

執筆者:掌田 津耶乃

paintメソッドとGraphics


では、コンポーネントに描画を行うのに用いる「paint」メソッドというのはどういうものなのでしょうか。ここでその基本的な形を理解しておきましょう。

public void paint(Graphics g){
  ・・・ここに描画処理を書く・・・
}


これが、paintメソッドの基本形です。Frame継承クラスなどにこのメソッドを用意すれば、必要に応じて呼び出され画面に描画されるわけです。このメソッドは、引数に「Graphics」というクラスのインスタンスを持っています。これはjava.awtパッケージにあるクラスで、画面描画のための機能を一通りもったクラスです。ここに用意されている描画用のメソッドを呼び出すと、そのコンポーネントに描画がなされます。――では、実際に簡単な描画を行ってみましょう。

import java.awt.*;

public class Sample extends Frame {

  public static void main(String[] args) {
    new Sample();
  }
  
  public Sample(){
    this.setSize(300,250);
    this.setVisible(true);
  }
  
  public void paint(Graphics g){
    g.drawRect(10,60,280,180);
    g.drawRect(20,70,260,160);
    g.fillOval(100,100,100,100);
  }
  
}
サンプルを実行すると、四角い枠の中に円を描いたウインドウが現れます。


例によってプログラム終了の処理はないので強制終了して終えてください。これを実行すると、2重の四角い枠線の中に黒い円が表示されます。プログラムがどんな形になっているかよく見てみましょう。クラスは、extends FrameというようにFrameを継承して作っていますね。また「コンストラクタ」というメソッドで大きさを設定し表示させています。これらは既にAWTの使い方として説明したものです。よくわからない人は本連載の「AWTのコンポーネントを使おう」を読み返しておきましょう。

肝心の描画を行っているのが「paint」メソッドですね。ここでは引数のGraphics(変数g)を使って描画を実行しています。ここでは「drawRect」「fillOval」というメソッドを呼び出しています。これらは、枠線だけの四角形を描くメソッドと、中を塗りつぶした楕円を描くメソッドです。以下に主な図形を描くメソッドを紹介しておきましょう。

●枠線だけの長方形を描く
[Graphics].drawRect( 横位置,縦位置,横幅,縦幅 );


●中を塗りつぶした長方形を描く
[Graphics].fillRect( 横位置,縦位置,横幅,縦幅 );


●枠線だけの楕円を描く
[Graphics].drawOval( 横位置,縦位置,横幅,縦幅 );


●中を塗りつぶした長方形を描く
[Graphics].fillOval( 横位置,縦位置,横幅,縦幅 );


●2つの点を結ぶ直線を描く
[Graphics].drawLine( 横位置1,縦位置1,横位置2,縦位置2 );


とりあえずこれらのメソッドがわかれば、簡単な図形は描けるようになりそうですね。引数には、それぞれ位置や大きさを示すための整数を指定します。例えば、drawRect(10,60,280,180)というのは、横10、縦60ドットの位置に、横幅280、縦幅180ドットの大きさの枠線だけの長方形を描く」というものだったわけです。

位置や大きさは、実際にいろいろと数字を変えて描画をしてみれば、自然と感覚がつかめてくるはずです。ともかく上のサンプルを自分なりに修正して、図形の描画に慣れておきましょう。

  • 前のページへ
  • 1
  • 2
  • 3
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます