Java GUIプログラムのいろいろな書き方。

Javaのプログラムはプログラマーの裁量次第で、いろいろな書き方ができます。GUIのプログラムについてもいくつかパターンがありますので、今回はウィンドウの設定とインスタンスの生成を、違う書き方で書いた方法を紹介します。プログラムの実行結果はこれまでと同じです。

・PrefFrame クラスのコンストラクタにウィンドウの設定を書く方法
・PrefFrame クラスに main() メソッドを書く方法

プログラムがシンプルなうちに書き方の違いをつかんでおきましょう。


【1】新しく sample202 と sample203 フォルダを作ります。

java-439.gif


【2】各フォルダの中に以下のようにファイルを作成します。

*「\」はWindowsではエンマークのことです。

・sample202
java-435.gif

保存先 C:\java\sample202
ファイル名 PrefTest.java

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

class PrefFrame extends Frame {

    public PrefFrame(String title) {
      //フレームのタイトル
      setTitle(title);

      //ウィンドウを閉じる時
      addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
          System.exit(0);
        }
      });

      //フレームの設定
      setLocation(300, 200);
      setSize(250, 350);
      setBackground(Color.LIGHT_GRAY);

    }
}


public class PrefTest {

  public static void main(String args[]) {
    PrefFrame frm = new PrefFrame("都道府県マスター");
    frm.setVisible(true);
  }

}



・sample203
java-437.gif

保存先 C:\java\sample203
ファイル名 PrefFrame.java

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

class PrefFrame extends Frame {

  public static void main(String args[]) {
    PrefFrame frm = new PrefFrame("都道府県マスター");
  }

    public PrefFrame(String title) {
      //フレームのタイトル
      setTitle(title);

      //ウィンドウを閉じる時
      addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
          System.exit(0);
        }
      });

      //フレームの設定
      setLocation(300, 200);
      setSize(250, 350);
      setBackground(Color.LIGHT_GRAY);
      setVisible(true);

    }
}



【3】以下の図を参考に、カレントディレクトリの移動、コンパイル、プログラムの実行を行い、2つを比べてみてください。少し方法が異なりますので注意してください。

・sample202
java-436.gif


・sample203
java-438.gif

*sample203 ではPrefFrame クラスを実行している点に注目


【解説】

(1)フォルダを分けた理由

今回の例でわざわざフォルダを分けたのは、 PrefTest.java と PrefFrame.java の両方のソースファイルに PrefFrame クラスが含まれているからです。ソースファイル名が違うので、同じフォルダ内に保存できますが、コンパイルする時に不都合があります。

それぞれの PrefFrame クラスは内容が違いますが、同じフォルダ内でコンパイルすると、クラスファイルは同じになるため、一方が上書きされてしまいます。クラス名を別にすると同じフォルダ内にあっても問題ありません。

しかしクラス名を変えると、ファイル名、コンストラクタ名、インスタンスの生成も変わりますので、別フォルダに分けました。


(2)インスタンス生成時にコンストラクタが呼び出され、各設定が行われています。


(3)sample203 の PrefFrame.java はmain() メソッドでクラス自身のインスタンスを生成しています。main() メソッドは static なので、インスタンスを生成していなくても使えます。

  public static void main(String args[]) {
    PrefFrame frm = new PrefFrame("都道府県マスター");
  }


プログラムを1つにまとめるか分けるかは一長一短があります。ウィンドウの表示が複雑になってくるとプログラムが長くなりますので、分けたほうが見やすくなる場合もあります。

以上のようにいろいろなプログラムの書き方があります。市販の本でも著者によって書き方が違いますので、読むとき戸惑わないように頭の片隅にでも覚えておいてください。


スポンサードリンク

スポンサードリンク






Java初心者入門講座TOPへ