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 |