|
Javaでは、ブラウザ上で実行するアプレットの他にアプリケーションも作成できます。アプリケーションは、コマンドライン上で実行するコマンド形式の他独自のウインドウを持つGUIベースのものも作成でき、プラットフォーム独立というJavaの特長を活かしたアプリケーションも出てきましたね。アプリケーションでは、アプレットでは事実上不可能だったローカルファイルへのアクセスが可能なので実用的なプログラムを開発できます。今回は、このアプリケーションをJDK1.1xベースで作ってみましょう。 FrameベースのアプリケーションGUIを利用するアプリケーションでは、メインウインドウとしてFrameが必要です。アプリケーションをFrameのサブクラスとするか、パネルなどにGUIコンポーネント群を配置しさらにそのパネルをアプリケーションで生成したFrameに配置する、という形になるでしょう。今回は、アプリケーションクラスをFrameのサブクラスとして定義する事にしました。 Frameクラスからアプリケーションを作る場合、基本的な形は以下のようになります。
class atest extends Frame {
public atest() { // コンストラクタ
}
public static void main(String args[]) { // main
atest tes=new atest(); // アプリケーション生成
tes.pack(); // アプリケーションウインドウpack
tes.show(); // ウインドウ表示
}
・・他のメソッド・・
}
つまり、アプリケーションのmain()内でアプリケーションクラスのインスタンスを作るわけですね。GUIを利用する時には、コンストラクタ内でレイアウトを設定しGUIのインスタンスを生成・配置していけば良いでしょう。今回は、コンストラクタ内でボタンを配置しこのボタンをクリックするとウインドウを破棄してアプリケーションを終了するようにしてみました。アプリケーション自体をボタンのイベントリスナ(ActionListener)にして、ボタンがクリックされたらactionPerformed()で終了します。
import java.awt.*;
import java.awt.event.*;
class atest extends Frame implements ActionListener {
Button bt;
public atest() {
setLayout(new FlowLayout()); // レイアウト設定
bt=new Button("Close"); // ボタン生成
bt.addActionListener(this); // ボタンのイベントリスナ設定
add(bt); // ボタン配置
}
public static void main(String args[]) {
atest tes=new atest(); // アプリケーション生成
tes.pack();
tes.show();
}
public void actionPerformed(ActionEvent e) {
if (e.getSource()==bt) { // ボタンクリックイベント
dispose(); // アプリケーションフレーム破棄
System.exit(0); // 終了
}
}
}
プログラムソースをダウンロードしたら、拡張子をjavaに変更しJDK1.1以降のjavacコマンドでコンパイルしてください。実行は、ブラウザ上ではなくjavaコマンド(例:java atest)などで直接クラスファイルを実行します。 |