gpt4 book ai didi

swing - 选中其中的复选框时,如何防止JPopUpMenu消失?

转载 作者:行者123 更新时间:2023-12-04 03:23:58 26 4
gpt4 key购买 nike

我想在JCheckBoxMenuItem中使用JPopupMenu。它的工作原理,但问题是,当一个复选框项目已被选中或取消选中弹出菜单中消失。因此,如果要检查/取消选中多个项目,则需要反复启动弹出窗口,这很烦人。

奇怪的是,如果我仅在菜单中使用普通的JCheckBox项(而不是JCheckBoxMenuItem),则其行为应为应有的状态:弹出窗口停留在那里,并且可以选中/取消选中复选框。完成后,只需在外部单击即可关闭弹出窗口。

当项目中有JCheckBoxMenuItem时,如何使弹出窗口具有类似的行为?由于它们的外观,我更喜欢使用JCheckBoxMenuItem

最佳答案

好吧,从http://forums.sun.com/thread.jspa?threadID=5432911找到了工作答案。基本上,创建一个自定义UI:

public class StayOpenCheckBoxMenuItemUI extends BasicCheckBoxMenuItemUI {

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

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

并将其设置在 JCheckBoxMenuItem中:
myJCheckBoxMenuItem.setUI(new StayOpenCheckBoxMenuItemUI());

不知道这是否是最优雅的解决方案,但是效果很好。

关于swing - 选中其中的复选框时,如何防止JPopUpMenu消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3759379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com