0

我有一个弹出菜单(当用户右键单击指定元素时会出现),从列表中读取其中的项目。I want that when an item is selected, that item is disabled in the popupMenu (then if some action happen it will return enabled). 我已经实现了 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);
    }
4

1 回答 1

0

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

这里有一篇关于如何使用 Actions 的论述:How to use Actions JAVA

于 2013-06-13T11:38:47.087 回答