2013-05-04 36 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

相關問題