アプリケーション


Swing のウィンドウ

AWT アプリケーションでは、Frame クラスを使用して GUI アプリケーションを作成しました
Swing の場合は JApplet 同様に Frame に置き換わる新しいクラス
javax.swing.JFrame クラスを使用してアプリケーションを建築します
java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--java.awt.Window
                    |
                    +--java.awt.Frame
                          |
                          +--javax.swing.JFrame
このクラスは Frame クラスを拡張し、Swing の仕様を追加しています
この仕様は JApplet 同様で、コンテンツペインなどを含みます

public class JFrame extends Frame
implements WindowConstants, Accessible, RootPaneContainer

update() や setLayout() などのオーバーライドの目的は JApplet と同じです
JFrame クラスは JRootPane を唯一の子コンポーネントとして保持し
JFrame に追加されるコンポーネントの全てはコンテンツペインを親にしなければいけません

また、レイアウトマネージャに関しても同様にコンテンツペインのレイアウトマネージャを操作します
add() や setLayout() を監視する setRootPaneCheckingEnabled() などもサポートされています

アプレットと異なる注目するべき点が WindowConstants インターフェイスの存在です
このインターフェイスは、ウィンドウの終了動作を制御する定数を定義しています

public static final int DO_NOTHING_ON_CLOSE
public static final int HIDE_ON_CLOSE
public static final int DISPOSE_ON_CLOSE
public static final int EXIT_ON_CLOSE

DO_NOTHING_ON_CLOSE は何も行わない
HIDE_ON_CLOSE は終了動作があるとウィンドウを非表示にする
DISPOSE_ON_CLOSE は終了動作があるとウィンドウを破棄することを意味します

EXIT_ON_CLOSE は JDK 1.4 から追加された新しい定数です
この値を指定した場合は、ウィンドウの終了がアプリケーションの終了を意味します
それ以前の Java では、ウィンドウの破棄が終了となるデフォルト動作がありません
そのため、リスナを登録して System.exit() メソッドから終了する必要がありました

これらの定数は JFrame クラスの setDefaultCloseOperation() で使用します

public void setDefaultCloseOperation(int operation)

operation に、WindowConstants インターフェイスで定義されている定数を指定します
このメソッドは、ユーザーがフレームに終了動作を要求した時のデフォルト動作を設定します
この設定を取得する getDefaultCloseOperation() メソッドもサポートされています

public int getDefaultCloseOperation()

このメソッドは、ウィンドウクローズ処理を示す int 値を返します

JFrame クラスのコンストラクタは、次のものがあります
(ただし、Java 2 SDK 1.3 では、さらに二つのコンストラクタが追加されている)

public JFrame()
public JFrame(String title)

titile には、フレームのタイトルを指定します
これらのコンストラクタは不可視状態の新しいフレームを生成します
Frame クラスを扱ったことがあるならば理解しているでしょう
import javax.swing.*;
import java.awt.*;

public class Test {
	public static void main(String args[]) {
		JFrame frm = new JFrame("Kitty on your lap");
		frm.setBounds(0 , 0 , 400 , 200);
		frm.setVisible(true);
		frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}


Swing の JFrame を拡張したフレームによるアプリケーションです
EXIT_ON_CLOSE 定数をデフォルトの終了動作と設定しているため
ウィンドウを閉じると同時にアプリケーションは終了します

アプリケーションでコンポーネントの追加やレイアウトマネージャの設定も
JRootPane のコンテンツペインに対して行います
この方法は、JApplet で学習した方法とまったく同じです
import javax.swing.*;
import java.awt.*;

public class Test {
	public static void main(String args[]) {
		JFrame frm = new JFrame("Kitty on your lap");
		frm.setBounds(0 , 0 , 400 , 200);

		Container contentPane = frm.getContentPane();
		contentPane.setLayout(new FlowLayout());
		contentPane.add(new Button("Kitty on your lap"));

		frm.setVisible(true);
		frm.setDefaultCloseOperation(EXIT_ON_CLOSE);
	}
}


このプログラムは、レイアウトマネージャを FlowLayout() に変更し
重量コンポーネントのボタンを追加しています



前のページへ戻る次のページへ