使JPopupMenu不关闭项目选择

时间:2013-03-28 12:34:50

标签: java swing jmenuitem jpopupmenu

这就是我想要做的。我正在制作一个弹出窗口,一次显示10个单词,并显示接下来的10条建议。我把它设计成一个有11个项目的JPopupMenu; 10个建议和一个“显示更多...”选项。

enter image description here

在“显示更多...”上运行的代码会删除所有以前的项目,并添加新项目(足够简单)。

问题是,当我按下“显示更多...”时,JPopupMenu关闭(因为我认为是默认行为)。我已经尝试过这方面的工作,即使创建一个全新的弹出窗口并将其显示在同一位置。

有没有一种简单的方法可以让JPopupMenu在按下其中一个项目时不会消失? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

我一直在将它用于复选框项目:

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