我有一个弹出菜单(当用户使用右键单击指定元素时出现),从列表中读取项目。 我希望当选择一个项目时,该项目在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 :(得分:0)
这种方式主要是使用Actions。操作是ActionListener接口的扩展。例如,您可以将Action设置为JMenuItem,并在您可以设置的Action中设置为false。这将自动禁用JMenuItem。或者,您可以通过在Action上将enabled设置为true来启用它。 这是Action API @Oracle:Action API JAVA
以下是关于如何使用操作的讨论:How to use Actions JAVA