1

JCheckBoxMenuItem残りのメニュー項目を強調表示する条件を設定するメニュー バーにメニューを作成しました。

次の擬似コードのようなもの:

if login(true)
    then highlight remaining menuitems
else
    un-highlight the menuitems
4

3 に答える 3

5

強調表示するには、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); 
}
于 2012-08-26T12:48:24.450 に答える
4

メニュー項目の有効化と無効化は、メソッドJComponentを使用して他のものと同じ方法で行われますsetEnabled( boolean )

于 2012-08-26T12:47:40.737 に答える
2

JCheckBoxMenuItemas 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)成功すると、メニューのチェックボックスがオンになり、他のメニュー項目が有効になります。

于 2012-08-26T13:05:36.460 に答える