メニュー項目のチェック
チェックマークが付くメニュー
以前、フレームのメニューについて詳しく説明しました
今回は、さらに高度なメニュー操作のクラスを紹介します
設定項目などでメニューを使用する場合、チェックボックス同様に真か偽で判断できるとわかりやすいです
これを、ユーザーにも直感的に理解できるようにチェックマークをつけるとよいですね
その動作をサポートするクラスが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());
}
}
メニュー項目をチェックすると、イベントが発生し
チェックボックスメニューの状態をブール値で表示します