ゲーム専門学校 ゲームプログラム入門 JavaGUI編

(2)AWTによるJavaアプリケーション(Windowsアプリケーション)

(a) AWTによる雛形 その1

Samp01.java
import java.awt.*;
import java.awt.event.*;
public class Samp01 {
    public static void main(String args[]) {
        // winオブジェクトを作成する
        Frame win = new Frame("AWTによるウィンドウ雛形");
        // ウィンドウのサイズを指定する
        win.setSize(400, 200);
        // ウィンドウリスナを登録、実装する
        win.addWindowListener(
            new WindowAdapter() {
                // ウィンドウの終了手続き
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            }
        );
        // ウィンドウを表示する
        win.setVisible(true);
    }
}

《解説》

タイトルが付いた何も書いてないウインドウを表示する。
Frameクラス

 コンストラクタ
   タイトルバーの内容を設定する。 
 メソッド  
   setSize ウインドウのサイズを指定する
addWindowListener イベントリスナを登録する
setVisible ウインドウの表示指定をする
import java.awt.*;
import java.awt.event.*;
java.awtに各種AWTコンポーネントに必要なパッケージがあり、java.awt.eventにイベント関係のパッケージがある。
最低限これらのパッケージが必要になる。
        // Winオブジェクトを作成する
        Frame win = new Frame("AWTによるウィンドウ雛形");
Frameクラスを利用しウインドウを作成するため、Frameクラスをインスタンス化しオブジェクトWinを生成する。
このときコンストラクタの引数はタイトルバーに表示される内容となる。
        // ウィンドウのサイズを指定する
        win.setSize(400, 200);
setSizeメソッドにより表示されるウインドウのサイズを指定する。
        // ウィンドウリスナを登録、実装する
        win.addWindowListener(
            new WindowAdapter() {
                // ウィンドウの終了手続き
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            }
        );
addWindowListenerメソッドでイベントリスナを実装する。
WindowAdapter()無名インナクラス(2章イベント処理で解説)といい、このクラスの中にイベントリスナを記述する。
windowClosing()はウインドウが閉じられたとき発生するイベントリスナで、System.exit(0)によりプログラムが終了する。
        // ウィンドウを表示する
        win.setVisible(true);
setVisibleメソッドによりウインドウが表示される。
非表示にするにはwin.setVisible(false)とする。

(b) AWTによる雛形 その2

Samp02.java
import java.awt.*;
import java.awt.event.*;

public class Samp02 {
    public static void main(String args[]) {
        // MyFirstWindowオブジェクトを作成する
        MyFirstWindow win = new MyFirstWindow();
        // ウィンドウのサイズを指定する
        win.setSize(400, 200);
        // ウィンドウリスナを登録、実装する
        win.addWindowListener(
            new WindowAdapter() {
                // ウィンドウの終了手続き
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            }
        );
        // ウィンドウを表示する
        win.setVisible(true);
    }
}
// MyFirstWindowウィンドウクラスを定義する
class MyFirstWindow extends Frame {
    // デフォルトコンストラクタを実装する
    MyFirstWindow() {
        super("AWTによるJavaアプリケーション");
    }
    // 再描画メソッドをオーバーライドする
    public void paint(Graphics g) {
        String str = "Hello Java";
        g.drawString(str, 20, 50);
    }
}

《解説》

”Hello Java”と文字列が書かれたウインドウ表示する。
文字を表示するためにはFrameクラスのpaint(再描画)メソッドを更新しなければならない。
そうしないと、再描画が行われるときに表示した文字が消えてしまう。
再描画メソッドを更新するためにFrameクラスのpaintメソッドをオーバーライドする。
// MyFirstWindowウィンドウクラスを定義する
class MyFirstWindow extends Frame {
paintメソッドをオーバーライドするためにFrameクラスを継承する。
    // デフォルトコンストラクタを実装する
    MyFirstWindow() {
        super("AWTによるJavaアプリケーション");
    }
MyFirstWindowクラスのコンストラクタ。
スーパークラスであるFrameクラスのコンストラクタを実行する。
    // 再描画メソッドをオーバーライドする
    public void paint(Graphics g) {
        String str = "Hello Java";
        g.drawString(str, 20, 50);
    }
}
このメソッドは再描画を行うpaintメソッドをオーバーライドしている。
paintメソッドが実行されるとき、Graphicsクラスのオブジェクトが自動的に用意される。
Graphicsクラスはウインドウの表示領域に描画するためのさまざまなメソッドがあり、drawStringメソッドにより文字列を指定した座標に表示される。


(c) AWTによる雛形 その3

Samp03.java
import java.awt.*;
import java.awt.event.*;

public class Samp03 extends Frame{
    public static void main(String args[]) {
        // MyFirstJavaオブジェクトを作成する
        Samp03 win = new Samp03();
        // ウィンドウのサイズを指定する
        win.setSize(400, 200);
        // ウィンドウリスナを登録、実装する
        win.addWindowListener(
            new WindowAdapter() {
                // ウィンドウの終了手続き
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            }
        );
        // ウィンドウを表示する
        win.setVisible(true);
    }

    // Samp03クラスのコンストラクタを実装する
    Samp03() {
        super("AWTのウィンドウ");
    }
    // 再描画メソッドをオーバーライドする
    public void paint(Graphics g) {
        String str = "Java Samp03";
        g.drawString(str, 20, 50);
    }
} 

《解説》

”Java Samp03”と文字列が書かれたウインドウ表示する。
public class Samp03 extends Frame{
その2のプログラムではFrameクラスを継承したMyFirstWindowクラスを利用したが、その3ではSamp03クラス自身がFrameクラスを継承する。
        // MyFirstJavaオブジェクトを作成する
        Samp03 win = new Samp03();
Samp03クラスが自分自身をインスタンス化し、オブジェクトwinを作成する。
    // Samp03クラスのコンストラクタを実装する
    Samp03() {
        super("AWTのウィンドウ");
    }
スーパークラスであるFrameクラスのコンストラクタを実行する。
inserted by FC2 system