Java JMenu-选定和取消选定功能
我插入了一个没有任何JMenuItem的JMenu(实例名:exitMenu),因此我的目的是提供一种退出程序的方法,而不访问不必要的菜单项,因为我的程序只有一个JMenu对象(有人可能会说:WTF!!!但是…) 因此,为了捕获这个特定JMenu组件中发生的事件,我的类实现了MenuListener接口。众所周知,有三种强制实现方法,尽管我只需要使用一种,menuSelected()方法 毫无疑问,为了让我的程序更直观,一旦用户选择exitMenu,著名的弹出式JOptionPane.showConfirmDialog()就会出现在用户需要选择YES或NO选项的地方 如果选择的选项为“是”,则根本没有问题,因为程序是通过System.exit(0)完成的。问题在于“否”选项,当焦点返回到程序时,exitMenu(退出菜单)仍处于选中状态,因为我之前已经选择了。我想做的“事情”是在选择“否”选项后立即删除对象选择,这样用户就可以再次单击它 即使在三个强制方法(一个调用另一个)中使用exitMenu.setSelected(false),尽管exitMenu组件是“取消选择”的,但有必要单击它两次以调用其事件侦听器 有什么建议吗Java JMenu-选定和取消选定功能,java,swing,selected,jmenu,Java,Swing,Selected,Jmenu,我插入了一个没有任何JMenuItem的JMenu(实例名:exitMenu),因此我的目的是提供一种退出程序的方法,而不访问不必要的菜单项,因为我的程序只有一个JMenu对象(有人可能会说:WTF!!!但是…) 因此,为了捕获这个特定JMenu组件中发生的事件,我的类实现了MenuListener接口。众所周知,有三种强制实现方法,尽管我只需要使用一种,menuSelected()方法 毫无疑问,为了让我的程序更直观,一旦用户选择exitMenu,著名的弹出式JOptionPane.showC
提前感谢。我尝试的一件事是从menuSelected(…)方法中简单地调用
setSelected(false)
,但这有副作用。一方面,菜单似乎没有被选中,另一方面,它并不总是工作
一个可行的解决方案是取消选择Swing计时器中的菜单。比如:
@Override
public void menuSelected(MenuEvent mEvt) {
// show JOptionPane
// if yes selected, exit.
// Otherwise...
final JMenu menu = (JMenu) mEvt.getSource();
new Timer(200, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
menu.setSelected(false);
((Timer)e.getSource()).stop();
}
}).start();
}
例如,有两个级别
有JMenu
MenuListener
有JMenuItem
ButtonModel