Java JMenuItem中的JButton

Java JMenuItem中的JButton,java,swing,jbutton,jmenu,jmenuitem,Java,Swing,Jbutton,Jmenu,Jmenuitem,我正在尝试构建一个特定的JMenu。 我想要一个具有JMenu功能的JMenuItem,也就是说,当我们单击它时,该项应该做一些事情(比如打开一个对话框)。但是JMenuItem还应该包含一个按钮(或其他组件),当我们单击它时,应该会打开一个带有几个选项的弹出窗口 所以,到目前为止,我有这样的想法: 这就是我在单击箭头之前所做的 我的问题是,当我按下按钮(箭头)时,子菜单实际上是打开的,但包含该按钮的菜单项由于失去焦点而关闭 这是单击箭头按钮后的结果 有什么办法来处理这个问题吗?还是一种更好

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

所以,到目前为止,我有这样的想法:

这就是我在单击箭头之前所做的

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

这是单击箭头按钮后的结果


有什么办法来处理这个问题吗?还是一种更好的方法来实现这种行为?

为什么不使用简单的嵌套
JMenuItem
? 类似(从顶部开始的第一个屏幕)


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

为什么不使用简单的嵌套
JMenuItem
? 类似(从顶部开始的第一个屏幕)


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

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

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

这不是菜单的用途。改用a,这些东西就会变得简单自然。

这不是菜单的目的。改用a,这些事情将变得简单自然。

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

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

您希望一个菜单项(菜单中的一行)具有两种不同的行为-单击文本时执行一些操作,单击按钮时打开一个子菜单?这对用户来说不是很友好,最好为子菜单使用一个菜单组,即添加一个新的(sub)
JMenu
。我的问题是,为什么您将JButton作为JMenuItem放在JMenu中,您对基本菜单不满意吗implementations@Thomas:是的,这正是我想要的:点击文本时执行操作,点击按钮时打开弹出窗口。我不完全相信这是你应该做的事情。话虽如此:为了更快地获得更好的帮助,发布一个。
JButton m=newjbutton()
JMenuBar abc=(JMenuBar)新建JMenuBar().add(m)类似这样的内容如何?因此,您希望一个菜单项(菜单中的一行)具有两种不同的行为-单击文本时执行一些操作,单击按钮时打开一个子菜单?这对用户来说不是很友好,最好为子菜单使用一个菜单组,即添加一个新的(sub)
JMenu
。我的问题是,为什么您将JButton作为JMenuItem放在JMenu中,您对基本菜单不满意吗implementations@Thomas:是的,这正是我想要的:点击文本时执行操作,点击按钮时打开弹出窗口。我不完全相信这是你应该做的事情。话虽如此:为了更快地获得更好的帮助,发布一个。
JButton m=newjbutton()
JMenuBar abc=(JMenuBar)新建JMenuBar().add(m)