Java 在选择项目时使JPOppMenu不关闭

Java 在选择项目时使JPOppMenu不关闭,java,swing,jmenuitem,jpopupmenu,Java,Swing,Jmenuitem,Jpopupmenu,这是我想做的。我正在制作一个弹出窗口,一次显示10个单词,并可以选择显示接下来的10个建议。我设计了一个包含11个项目的JPOppMenu;10条建议和一个“显示更多…”选项 在“ShowMore…”上运行的代码将删除所有以前的项,并添加新项(足够简单) 问题是,当我按下“Showmore…”时,JPopupMenu关闭(我认为这是默认行为)。我已经尝试了解决这个问题的方法,甚至创建了一个全新的弹出窗口,并将其显示在同一位置 有没有一种简单的方法可以使JPOppMenu在按下其中一项时不消失?

这是我想做的。我正在制作一个弹出窗口,一次显示10个单词,并可以选择显示接下来的10个建议。我设计了一个包含11个项目的JPOppMenu;10条建议和一个“显示更多…”选项

在“ShowMore…”上运行的代码将删除所有以前的项,并添加新项(足够简单)

问题是,当我按下“Showmore…”时,JPopupMenu关闭(我认为这是默认行为)。我已经尝试了解决这个问题的方法,甚至创建了一个全新的弹出窗口,并将其显示在同一位置

有没有一种简单的方法可以使JPOppMenu在按下其中一项时不消失?
提前谢谢

我一直在对复选框项目使用此选项:

import javax.swing.JCheckBoxMenuItem;
import javax.swing.JComponent;
import javax.swing.MenuSelectionManager;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicCheckBoxMenuItemUI;

public class StayOpenCheckBoxMenuItemUI extends BasicCheckBoxMenuItemUI {

    @Override
    protected void doClick(MenuSelectionManager msm) {
        menuItem.doClick(0);
    }

    public static ComponentUI createUI(JComponent c) {
        return new StayOpenCheckBoxMenuItemUI();
    }

}
然后,注册它:

myJCheckBoxMenuItem.setUI(new StayOpenCheckBoxMenuItemUI());

根据您的“显示更多”菜单项的类型,类似的解决方案也可以使用。只需将适当的UI子类化,而不是
BasicCheckBoxMenuItemUI

,以获得更好的帮助,使用
JPopup
JMenuItems
快速发布一个简短、可运行、可编译、几乎为空的
JFrame
,使用
JMenuItems
,用鼠标按下弹出项时,这种方法似乎有效,但当使用加速器热键时(这也是我想要的)。