第 5 章 総合演習 47
5.3 総合演習とQ&A
5.3.1 アプレットをアプリケーションとして動作させる手順
この授業では,
Web
ページ内で動作させるプログラム–
アプレット–
を題材に用いま したが,特にファイルへの書き出しが制限されていることが実用プログラムとしてのネッ クとなります。このため,より実用的なプログラムとするためには,独立して動作するア プリケーションの骨格も知っておく必要があります。Javaアプリケーションの要件
GUI
を使わない場合も,使う場合も,Java
プログラムの中には,main
というメソッド が必要となります。最も小さなプログラム(GUI
を用いない場合)
は,たとえば,次のよ うなものです。public class myApp1 {
static public void main(String[] args) {
System.out.println("*** This is a smallest Java application ***") ; }
}
クラスは,アプレットの場合と同じく,
public
属性を持つことが必要で,規約にした がって,このソースプログラムはmyApp1.java
という名前でなければなりません。また,main
メソッドは,必ず上記のように,static
で,なおかつ,public
属性を持たせてお きます。コンパイルは
javac
コマンドを用いて行ない,java
コマンドにクラス名を添えて実行 させます(ただし.class
は省く)。たとえば,Z:¥jsamples> notepad "myApp1.java" 新規に作成(Aは大文字で) Z:¥jsamples> javac myApp1.java コンパイル
Z:¥jsamples> java myApp1 仮想マシンで実行
*** This is a smallest Java application *** 実行結果 Z:¥jsamples>
また,
GUI
を使用する場合は,アプレットではブラウザが行なっていた仕事,つまり,ウィンドウを初期化する仕事が必要となります。
Java
では,ウィンドウを生成するためのWindow
クラスが準備されており,ここから派生させたFrame
クラス(またはJFrame
ク ラス)を用いて利用します。import java.awt.* ; import java.awt.event.* ; public class myApp2 {
static public void main(String[] args) {
// フレーム(ウィンドウ)の生成とタイトルの設定
Frame myFrame = new Frame("** My Application using GUI **") ; myFrame.setSize(400,400) ; // ウィンドウの大きさの設定
myFrame.setVisible(true) ; // 可視状態に設定 myFrame.addWindowListener( // 終了時の処理を登録
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0) ; // ウィンドウを閉じる際にアプリケーションも終了 }
} ) ; } }
これも,クラス名とソースプログラム名を一致させるという規約に従い,ソースプログ ラム名は
myApp2.java
でなければなりません。コンパイルの手順,実行の手順はmyApp1
の場合と同じです。実行結果は,ウィンドウとなって表示されます(が,中身は何もない ので空のウィンドウが表示されるだけです)。既存のアプレットのアプリケーション化
既存のアプレットがある場合は,それをほぼそのまま利用してアプリケーション化すること も可能です。たとえば,
sample01.java
をアプリケーション化するためには,run01.java
を次のように作成します。import java.awt.* ; import java.awt.event.* ; public class run01 {
static public void main(String[] args) {
// フレーム(ウィンドウ)の生成とタイトルの設定
Frame myFrame = new Frame("** Running an applet as an application **") ; // アプレットの生成
sample01 myApplet = new sample01() ;
myFrame.setSize(520,450) ; // ウィンドウの大きさの設定 myFrame.add(myApplet) ; // アプレットをフレーム内に追加
myApplet.init() ; // アプレットを初期化
myFrame.setVisible(true) ; // 可視状態に設定
myApplet.start() ; // アプレットの動作を開始
5.3.
総合演習とQ&A53
// 終了時の処理を登録myFrame.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0) ; // ウィンドウを閉じる際にアプリケーションも終了 }
} ) ; } }
このソースプログラムの中に
sample01
の実体が定義されていませんが,同じフォルダ内に
sample01.java
があると,コンパイル時に自動的にその内容が参照され,必要ならコンパイルも同時に行なわれるので,わざわざ実体を定義し直す(
run01.java
の中に組 み込む)必要はありません。実行は,
java run01
とすることで,アプレットsample01
がウィンドウ内に組み込ま れて表示されて実行されます。第 II 部
プログラム例と演習問題
57
第 6 章 プログラム例
以下のプログラムは,私の本務校である横浜市立大学のホームページにあらかじめ登録 してあります。インターネットエクスプローラを使って手元のパソコンにコピーした上で 利用してください。