基本的なメニューの例を Menu01.java に示す。
動作画面例を下に示す。左図は、マウス操作で、メニュー"menu 2.2(E)"をクリックする前を表す。 クリックすると、右図のメッセージボックスがポップアップ表示される。
"Menu 1(X)"における X はショートカット・キーと呼ばれるものである。 メニューはマウスで操作するのが基本であるが、プログラムで
menu1.setMnemonic(KeyEvent.VK_X); // Alt + Xで呼び出しとすれば、menu1 に Xキーがショートカットキーとして登録される。 Altキー(メニュー・キーと呼ばれることもある)と X キーを同時に押すと、 マウスでクリックしたのと同じ働きをする。
メニューへの表示文字列は "Menu 1" でも動作するが、 ユーザーにショートカット・キーの存在を知らせるために、末尾に "(X)" を付加するのが慣例である。
メニュー項目をクリックしたとき、何らかの動作をさせるわけであるが、 このために、まず、implements ActionListener の追加が必要である。
import java.awt.event.*; public class Menu01 extends JFrame implements ActionListener {
個々のメニュー項目に mi11.addActionListener(this); といった登録が必要となる。 そして、イベントが起きたときの処理を次のように記述しておく。 イベントの発生源は引数eから知ることができる。
public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "[" + e.getActionCommand() + "]が選択されました"); }
上の例で、"menu 1.2(B)" は末端項目ではなく、 子メニュー"menu 1.2.1(F)"、"menu 1.2.2(G)" を持つものに変えてみよう。 プログラムを Menu02.java に示す。
動作画面例を下に示す。
ポイントは、"menu 1.2(B)"をJMenuItemからJMenuに格上げし、そこに 子メニュー"menu 1.2.1(F)"、"menu 1.2.2(G)" を登録することである。 この二つの子メニューも、アクションリスナーに登録し、ショートカットキーもつけて置く。
JMenu mi12 = new JMenu("menu 1.2(B)"); JMenuItem mi121 = new JMenuItem("menu 1.2.1(F)"); JMenuItem mi122 = new JMenuItem("menu 1.2.2(G)"); mi12.add(mi121); mi12.add(mi122); mi121.addActionListener(this); mi122.addActionListener(this); mi121.setMnemonic('F'); mi122.setMnemonic('G');
英数字記号など通常の印字可能なキーについてはMenu02.javaのように KeyEvent.VK_A というような書き方の代わりに 'A' としてもよい。
メニュー文字列の前にチェックボックスを付けるのは簡単である。 JMenuItem の代わりに JCheckBoxItem とすればよい。
JCheckBoxMenuItem mi11 = new JCheckBoxMenuItem("menu 1.1(A)");とした場合、最初はチェックは付かず、クリックすると、チェックが付き、 もう一度クリックすると、チェックがとれる。すなわち、トグル・スイッチとなっている。
JCheckBoxMenuItem mi11 = new JCheckBoxMenuItem("menu 1.1(A)");とした場合、チェックが付いた状態が初期値となる。
プログラムで mi11のチェックボックスをオン(選択状態=チェックが付いた状態)にするには mi11.setSelected(true) とし、オフ(非選択状態)にするには mi11.setSelected(false) とすればよい。
また、選択状態かどうか知るには mi11.isSelected() のようにisSelectedメソッドを使う。 選択状態ならば true が返され、そうでなければ false が返される。
プログラム例およびその画面は次の節でアイコン付きのメニューと合わせて紹介する。
メニュー項目にアイコンを付けるのは、C# や Windows C よりも簡単である。
アイコン付きメニューのプログラム例を Menu04.java に示す。
実行画面を下に示す。
メニュー作成のポイントは次の通りである。 まず、イメージを読み込む。ファイル形式は png、gif、jpg に対応する。
チェックボックスなしの場合 JMenuItem で、 チェックボックス付きの場合 JCheckBoxMenuItem でメニュー項目を生成する。
イメージを付ける場合には、コンストラクタの引数にアイコンを加える。
ImageIcon iconBus = new ImageIcon("bus.png"); ImageIcon iconCalendar = new ImageIcon("calendar.png"); JCheckBoxMenuItem mi1 = new JCheckBoxMenuItem("バス時刻表(B)", iconBus); JMenuItem mi2 = new JMenuItem("カレンダー(C)", iconCalendar); JCheckBoxMenuItem mi3 = new JCheckBoxMenuItem("チェックボックステスト(T)", true);
メニュー項目に、アイコンとチェックオンのチェックボックスを付けるときには、 次のコンストラクタを使用する。
JCheckBoxMenuItem(String text, Icon icon, boolean b) Creates a check box menu item with the specified text, icon, and selection state.