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

Как это делается в основном с помощью Actions. Действия - это расширения интерфейса ActionListener. Вы можете установить действие, например, JMenuItem, а в действии вы можете установить значение false. Это автоматически отключит JMenuItem. В качестве альтернативы вы можете включить его, установив enabled в true в Action. Вот Действие API @Oracle: Action API JAVA

А вот рассуждения о том, как использовать действия: How to use Actions JAVA

 Смежные вопросы

  • Нет связанных вопросов^_^