【问题标题】:How to prevent JMenuItem from closing Menu upon clicking the JMenuItem如何防止 JMenuItem 在单击 JMenuItem 时关闭菜单
【发布时间】:2012-02-08 17:37:02
【问题描述】:

如何防止JMenuItem 在单击JMenuItem 时关闭菜单?

JMenuItem 已启用。

所以这就是场景,我有 3 个JMenuItems

JMenuItem: A, B, C;

C 显示一个整数X

A 和 B 用于将 X 增加或减少 1 的值。 如果单击 A 或 B,则默认性质是菜单将在单击时关闭。 我希望能够重复单击 A 或 B 并保持菜单处于打开状态,并在每次单击时执行相关的“操作”。

谢谢!

【问题讨论】:

  • 请使用sscce.org 表单中的代码编辑您的帖子

标签: java swing jmenu jmenuitem


【解决方案1】:

首先,使用菜单来执行此操作可能是错误的方法。 JSpinner 似乎更合适。但是,要使用JMenuItem 执行此操作,您可以将您正在使用的LookAndFeelMenuItemUI 子类化,并覆盖doClick(...) 方法,以便不调用clearSelectionPath(),这会在项目被关闭时关闭菜单点击。

例如,如果您使用的是 Motif LookAndFeel,您可以这样做:

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

我自己从未尝试过,但我认为它会起作用。

【讨论】:

  • 作为更改 UI 委托的替代方法,请考虑Action,显示为here
  • 这会阻止菜单在该项目上显示悬停动画,但单击它仍会关闭菜单。你能检查一下吗?
  • @TomášZato for JCheckBoxMenuItems,我发现我可以用JCheckBoxes 代替它们,它们也能正常工作。对于JMenuItems,也许JButton 会起作用。 (Source)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 2011-10-13
  • 2015-06-25
  • 1970-01-01
  • 2021-09-01
相关资源
最近更新 更多