user2312976
user2312976

Reputation: 41

How to refresh item in a popup menu?

i have a popup menu (that comes out when the user uses right click on specified elements), wich items are readed from a list. I want that when an item is selected, that item is disabled in the popupMenu (then if some action happen it will return enabled). I have implemented the popupMenu, but i cannot implement this enable/disable JMenuItem element. Anyone can help me? Thanks

    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);
    }

Upvotes: 0

Views: 514

Answers (1)

Markysch
Markysch

Reputation: 47

The way this is mostly done is using Actions. Actions are extensions of the ActionListener interface. You can set the Action of, for example, a JMenuItem and in the Action you can set enabled to false. This will automatically disable the JMenuItem. Alternately you can enable it by setting enabled to true on the Action. Here is the Action API @Oracle: Action API JAVA

And here is a discourse on how to use Actions: How to use Actions JAVA

Upvotes: 0

Related Questions