2013-05-04 55 views
0

我有一个弹出菜单(当用户使用右键单击指定的元素时出现),从列表中获得最终项目。 我希望当一个项目被选中时,该项目在popupMenu中被禁用(然后如果发生某个动作,它将返回启用)。 我已经实现了popupMenu,但是我不能实现这个启用/禁用JMenuItem元素。任何人都可以帮助我?谢谢如何刷新弹出菜单中的项目?

class PopupTriggerListener extends MouseAdapter { 
     public void mousePressed(MouseEvent ev) { 
     if (ev.isPopupTrigger()) { 
      menu.show(ev.getComponent(), ev.getX(), ev.getY()); 
      x = ev.getX(); 
      y = ev.getY(); 
     } 
     } 

     public void mouseReleased(MouseEvent ev) { 
     if (ev.isPopupTrigger()) { 
      menu.show(ev.getComponent(), ev.getX(), ev.getY()); 
      x = ev.getX(); 
      y = ev.getY(); 
     } 
     } 

     public void mouseClicked(MouseEvent ev) { 
     } 
    } 
    } 

     JLabel label = new MyLabel("right-click"); 

     public Test() { 
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      JMenuItem item = new JMenuItem("Test1"); 
      item.addActionListener(new ActionListener() { 
       public void actionPerformed(ActionEvent e) { 

     System.out.println("Menu item Test1"); 
     JLabel newLabel = new JLabel("test"); 
     label.add(newLabel); 
     newLabel.setBounds(x, y, 40, 10); 
       } 
      }); 
     menu.add(item); 

     item = new JMenuItem("Test2"); 
     item.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      System.out.println("Menu item Test2"); 
     } 
     }); 
     menu.add(item); 

     getContentPane().add(label); 
     pack(); 
     setSize(300, 100); 
    } 

    public static void main(String[] args) { 
     new Test().setVisible(true); 
    } 

回答

0

这是主要完成的方式是使用操作。动作是ActionListener接口的扩展。您可以设置Action的行为,例如JMenuItem,并在您可以将Action设置为false的Action中。这将自动禁用JMenuItem。或者,您可以通过将Action设置为true来启用它。 这里是行动API @Oracle:Action API JAVA

这里是关于如何使用操作话语:How to use Actions JAVA