1

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

在此处输入图像描述

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

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

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

4

1 回答 1

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.

于 2013-03-28T12:49:03.947 回答