メニュー項目のチェック


チェックマークが付くメニュー

以前、フレームのメニューについて詳しく説明しました
今回は、さらに高度なメニュー操作のクラスを紹介します

設定項目などでメニューを使用する場合、チェックボックス同様に真か偽で判断できるとわかりやすいです
これを、ユーザーにも直感的に理解できるようにチェックマークをつけるとよいですね
その動作をサポートするクラスがjava.awt.CheckboxMenuItemクラスです
このクラスはMenuItemクラスを拡張したクラスで、チェックボックスの機能をメニューでサポートします
以下はコンストラクタです

public CheckboxMenuItem()
public CheckboxMenuItem( String label )
public CheckboxMenuItem( String label, boolean state )

labelには、メニュー項目のラベルを指定します
stateには、メニュー項目が初期状態でオンかオフ(真か偽)かを指定します
stateを指定しない場合はデフォルトでオフとなります

このクラスが用意しているリスナメソッドは addItemListener() です
チェックボックスメニューの項目がオンかオフかを知るにはgetState()メソッドを使用します
また、意図的にチェックを操作するにはsetState()を呼び出します

public boolean getState()
public synchronized void setState( boolean b )

getState()メソッドは、チェックボックスメニューがオンであればtrueを
オフであればfalseを返します

setState()のbには、チェックボックスのないようを変更するブール値を指定します
trueならばオンに、falseならばオフになります
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class test extends Frame implements ItemListener {
	CheckboxMenuItem cm;
	Label lb;
	public static void main(String args[]) {
		test win = new test();
		win.appRun();
	}
	public void appRun() {
		Frame frm = new Frame("Kitty on your lap");
		frm.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});

		MenuBar mb = new MenuBar();
		Menu m = mb.add(new Menu("MENU"));
		cm = (CheckboxMenuItem)m.add(new CheckboxMenuItem("Kitty on your lap"));
		cm.addItemListener(this);

		frm.add(lb = new Label("BOOL = " + cm.getState()));
		frm.setMenuBar(mb);
		frm.setSize(400 ,300);
		frm.setVisible(true);
	}
	public void itemStateChanged(ItemEvent e) {
		lb.setText("BOOL = " + cm.getState());
	}
}
メニュー項目をチェックすると、イベントが発生し
チェックボックスメニューの状態をブール値で表示します



前のページへ戻る次のページへ