【问题标题】:JButton inside JMenuItemJMenuItem 内的 JButton
【发布时间】:2011-10-19 14:18:08
【问题描述】:

我正在尝试构建一个特定的JMenu。 我想要一个具有JMenu 功能的JMenuItem,即当我们点击它时,该项目应该做一些事情(比如打开一个对话框)。但是JMenuItem 还应该包含一个按钮(或其他组件),当我们单击它时,应该会打开一个带有几个选项的弹出窗口。

所以,到目前为止,我有这样的东西:

这就是我点击箭头之前的样子。

我的问题是,当我按下按钮(箭头)时,子菜单实际上是打开的,但是包含该按钮的菜单项会因为失去焦点而关闭。

这是点击箭头按钮后的结果。

有没有办法解决这个问题?还是有这种行为的更好方法?

【问题讨论】:

  • 所以您希望一个菜单项(菜单中的一行)具有两种不同的行为——单击文本时执行一些操作,单击按钮时打开子菜单?这不会很用户友好,最好为子菜单使用菜单组,即广告一个新的(子)JMenu
  • 我的问题,你为什么把JButton作为JMenuItem放在JMenu中,你对基本的实现不满意
  • @Thomas:是的,这正是我想要的:单击文本时执行操作,单击按钮时打开弹出窗口。
  • 我不完全相信这是您应该做的事情。话虽如此:为了尽快获得更好的帮助,请发布SSCCE
  • JButton m = new JButton(); JMenuBar abc = (JMenuBar) new JMenuBar().add(m); 这样的事情怎么样?

标签: java swing jbutton jmenu jmenuitem


【解决方案1】:

如果我们确切地知道您要实施什么,我们可以为您提供指导。如果您只想选择一个选项,您可以使用JRadioButtonMenuItem 以更好的方式实现它,因此您实际上不需要实现一个按钮然后选择一个选项。但这取决于您真正想要的。

【讨论】:

  • 我想要的正是托马斯提到的。我知道这对用户不友好,但此时我应该尝试这样做。
【解决方案2】:

这不是菜单的用途。改用ribbon,这些事情会变得简单而自然。

【讨论】:

  • 我同意,使用这样的菜单会非常违反直觉。丝带似乎是更好的选择。
【解决方案3】:

为什么不直接使用简单的嵌套JMenuItem 呢? this 之类的东西(从顶部开始的第一个屏幕)。

另一方面,您可以从here 描述的类似解决方案中受益。

【讨论】:

    【解决方案4】:

    实际上无法找到解决此特定问题的方法。 作为一种解决方法,我只使用了一个在选项 1 和选项 2 之间切换的简单按钮,而不是使用打开新弹出窗口的按钮(箭头)。 非常感谢您的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 2023-03-16
      • 2017-12-26
      • 2011-10-18
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      相关资源
      最近更新 更多