JCheckBoxMenuItem
残りのメニュー項目を強調表示する条件を設定するメニュー バーにメニューを作成しました。
次の擬似コードのようなもの:
if login(true)
then highlight remaining menuitems
else
un-highlight the menuitems
JCheckBoxMenuItem
残りのメニュー項目を強調表示する条件を設定するメニュー バーにメニューを作成しました。
次の擬似コードのようなもの:
if login(true)
then highlight remaining menuitems
else
un-highlight the menuitems
強調表示するには、JMenuItem を有効/無効にすることを意味すると思います。それは可能です。
setEnabled を使用します。
JMenuItem item;
item.setEnabled(false); //to disable
kleopatra が提案したように、それを行う最善の方法は、各 JMenuItem に独自のアクションを実装し、状態に応じてボタンを有効/無効にするアクションを実行することです。
例えば:
public class AMenuAction extends AbstractAction {
@override
public void actionPerformed(ActionEvent e) {
//implement your action behavior here
}
}
次に、そのようなアクションで JMenuItem を構築します。
AMenuAction afterLoginAction = new AMenuAction();
JMenuItem item = new JMenuItem(afterLoginAction );
ユーザーがログイン/ログアウトしたときに、目的のアクションで setEnabled メソッドを呼び出します。
void Login()
{
afterLoginAction.setEnabled(true);
}
メニュー項目の有効化と無効化は、メソッドJComponent
を使用して他のものと同じ方法で行われますsetEnabled( boolean )
JCheckBoxMenuItem
as userlogin メニュー項目を作成する
JCheckBoxMenuItem jCheckBoxMenuItem = new JCheckBoxMenuItem();
それから
それにアクションリスナーを追加します
//unhighlite other menu items before login
jMenuFileOpen.setEnabled(false);
//...
jCheckBoxMenuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if (login(true)){
jCheckBoxMenuItem.setSelected(true);
//highlite other menu items
jMenuFileOpen.setEnabled(true);
//...
} else {
jCheckBoxMenuItem.setSelected(false);
//unhighlite other menu items
jMenuFileOpen.setEnabled(false);
//...
}
}
});
login(true)
成功すると、メニューのチェックボックスがオンになり、他のメニュー項目が有効になります。