这就是我想要做的。我正在制作一个弹出窗口,一次显示10个单词,并显示接下来的10条建议。我把它设计成一个有11个项目的JPopupMenu; 10个建议和一个“显示更多...”选项。
在“显示更多...”上运行的代码会删除所有以前的项目,并添加新项目(足够简单)。
问题是,当我按下“显示更多...”时,JPopupMenu关闭(因为我认为是默认行为)。我已经尝试过这方面的工作,即使创建一个全新的弹出窗口并将其显示在同一位置。
有没有一种简单的方法可以让JPopupMenu在按下其中一个项目时不会消失? 提前谢谢!
答案 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
。