Java 如何在退出JOptionPane后取消选择JMenu?

Java 如何在退出JOptionPane后取消选择JMenu?,java,swing,jmenu,jmenuitem,Java,Swing,Jmenu,Jmenuitem,我正在JMenuBar中实现一个JMenu,单击它会打开一个JOptionPane(用户输入文本,但与问题无关)。但是,退出选项窗格后,菜单仍处于选中状态,如果用户滚动到另一个菜单,也会选择该菜单 我尝试对单击的第一个菜单使用.setSelected(false),但这并不阻止选择下一个菜单。有办法解决这个问题吗 编辑:下面是一个代码示例: JMenu menu= new JMenu(""); menuBar.add(menu); menu.addMenuListener(new MenuLis

我正在
JMenuBar
中实现一个
JMenu
,单击它会打开一个
JOptionPane
(用户输入文本,但与问题无关)。但是,退出选项窗格后,菜单仍处于选中状态,如果用户滚动到另一个菜单,也会选择该菜单

我尝试对单击的第一个菜单使用
.setSelected(false)
,但这并不阻止选择下一个菜单。有办法解决这个问题吗

编辑:下面是一个代码示例:

JMenu menu= new JMenu("");
menuBar.add(menu);
menu.addMenuListener(new MenuListener() {
        @Override
        public void menuSelected(MenuEvent e) {
            String input = JOptionPane.showInputDialog("Name: ");

            if(input!=null) {
                JMenuItem port = new JMenuItem();
                port.setText(input);
            } else {
                JOptionPane.showMessageDialog(frame, "Error", "Input Error", JOptionPane.ERROR_MESSAGE);
            }

请创建并发布一个小但简单的完整程序,说明您的问题,一个。有关此非常有用的工具的详细信息,请查看链接。请尝试将显示JOptionPane的代码包装到SwingUtilities.invokeLater()中。这样,在显示选项窗格之前,菜单应该有机会重新绘制自身。使用SwingUtilities.invokeLater()可以解决选择问题,但不允许我在其正下方为if语句创建/编辑“输入”字符串。除非有不同的实现,否则我应该使用?提示:添加@HovercraftFullOfEels(或者任何人,
@
很重要)来通知此人新的注释。我找到了一个解决方法:改为在JMenuBar中添加一个JButton。如果我不打算添加任何菜单项,我想使用按钮更有意义。