| 14. Menu |
メニューの作り方です。ここでは基本的な使い方のみ紹介します。そのほかのコンストラクタやメソッド、フィールドについては API ドキュメントを参照してください。
| (1) 3つの部品でメニューをつくります |
MenuBar bar = new MenuBar( );
のように引数無しのコンストラクタを使います。
そして、このメニューバーに java.awt.Menu クラスを使って最上位のメニューを作ります。Menu の作り方は表示したいメニュー名をラベルとし次のコンストラクタを使います。
Menu file = new Menu("ファイル");
最後にサブメニューを作ります。サブメニューは java.awt.MenuItem クラスを使います。サブメニューもメニューと同じように表示するサブメニュー名をラベルとし次のように作ります。
MenuItem load = new MenuItem("開く");
![]()
これで表示する部品ができたので、どのメニューがどのメニューアイテムを持つかという関連づけをします。これはコンテナにコンポーネントを追加するのと同じイメージで add() メソッドを使います。フレームにメニューを追加するときは以下のような手順になります。
1.メニューアイテムをメニューに追加
Menu クラスの add( ) を使います。file.add(load) のようにします。
2.メニューをメニューバーに追加
MenuBar クラスの add( ) を使います。bar.add(file) のようにします。
3.フレームにメニューバーを追加
Frame クラスの setMenuBar( ) を使います。setMenuBar(bar) のように使います。
この手順の3番目でわかるように、メニューバーを追加するには Frame クラスのメソッドを使わなければいけないので、メニューはフレームにしか付けることができないわけです。
| (2) メニューの選択にはイベント処理が必要です |
// MenuTest.java
import java.awt.*;
import java.awt.event.*;
public class MenuTest extends Frame implements ActionListener {
MenuTest() {
setSize(300,200);
// メニューバー作成
MenuBar bar = new MenuBar();
// メニュー作成
Menu file = new Menu("ファイル");
// メニューアイテム作成
MenuItem load = new MenuItem("開く");
MenuItem save = new MenuItem("保存");
MenuItem quit = new MenuItem("終了");
// メニューアイテムをメニューに追加
file.add(load);
file.add(save);
file.add(quit);
// メニューをメニューバーに追加
bar.add(file);
// メニューバーをフレームに追加
setMenuBar(bar);
// リスナ登録
load.addActionListener(this);
save.addActionListener(this);
quit.addActionListener(this);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
FileDialog dialog = null;
String action = e.getActionCommand();
if (action.equals("開く")) {
dialog = new FileDialog(this,"開く",FileDialog.LOAD);
dialog.setVisible(true);
} else if (action.equals("保存") ) {
dialog = new FileDialog(this,"保存",FileDialog.SAVE);
dialog.setVisible(true);
} else {
System.exit(0);
}
System.out.println( dialog.getFile() + "を選択しました。" );
}
public static void main(String args[]) {
MenuTest obj = new MenuTest();
}
}
|
C:\java_test>java MenuTest |
