Java 将单击事件处理程序添加到JMenu

Java 将单击事件处理程序添加到JMenu,java,swing,Java,Swing,我希望在用户单击TestSuite时捕获事件,并动态添加一些菜单项 JMenu menu5 = new JMenu("TestSuite"); 如何在JavaSwing上实现这一点?通过添加addActionListener(此选项),我可以捕获所有JMenuItem单击事件。但是这次不是JMenuItem,而是JMenu。您可以使用ActionListener接口,就像在JButton上添加事件一样 menu5.addActionListener(this); 其中“this”是上面示例中

我希望在用户单击TestSuite时捕获事件,并动态添加一些菜单项

JMenu menu5 = new JMenu("TestSuite");

如何在JavaSwing上实现这一点?通过添加addActionListener(此选项),我可以捕获所有JMenuItem单击事件。但是这次不是JMenuItem,而是JMenu。

您可以使用ActionListener接口,就像在JButton上添加事件一样

menu5.addActionListener(this);
其中“this”是上面示例中实现ActionListener接口的类的引用,它是同一个类


要添加菜单,您可以使用菜单5。添加(新菜单项(“菜单项1”)

您可以向
JMenu
添加
MenuListener
并侦听
menuSelected
事件。这将允许您在弹出窗口可见之前动态地向菜单中添加/删除菜单项。

(1-)您可以向JMenuItem添加ActionListener,但不能向JMenu添加ActionListener。
您真蠢。去查看java文档
——我想我应该更清楚一些。您可以将ActionListener添加到JMenu,但是当您单击菜单时,将不会调用该侦听器。这就是OP提出这个问题的原因。他们特别声明ActionListener适用于JMenuItem,但不适用于JMenu。如果他们使用快捷键,则添加鼠标侦听器将失败。@BillK您不能将快捷键添加到菜单中,我想您的意思是“nmenomics”。在这种情况下,将调用MenuListener。正如我建议的,您需要根据实际需求选择解决方案。菜单不是这样设计的。许多程序根据状态添加和删除菜单项。。。仅仅因为你没有遇到一组需求,你可能就不应该认为它们无效。你回答中糟糕的第一部分让我完全忽略了其余部分——删除鼠标侦听器建议(分散注意力,不太可能有用,事实上,这个问题完全错了)还可能提到您正在查找的事件是MenuSelected——当用户单击TestSuite并动态添加一些menuitem时,一个代码示例可能很好。(1-
-这是一个糟糕的设计。您如何知道用户何时想要“添加一些菜单项”,或者他们是否只想显示弹出菜单?也许第一个菜单项应该是“添加更多…”菜单项。这是一个完全合乎逻辑的问题。不要将其视为“添加”菜单项,Marcus很可能希望根据当时的状态动态创建菜单内容。他使用“添加”可能是简化了问题。@BillK,是的,我知道你是否每次都在完全“重建”菜单,这是合理的。无论如何,我的评论是针对“添加”这一规定的。