我想捕捉事件,当用户点击TestSuite并动态添加一些MenuItems。添加单击事件处理程序到JMenu
JMenu menu5 = new JMenu("TestSuite");
如何在Java Swing上做到这一点?我可以通过添加addActionListener(this)来捕获所有JMenuItem点击事件。但是这次不是JMenuItem,它是JMenu。
我想捕捉事件,当用户点击TestSuite并动态添加一些MenuItems。添加单击事件处理程序到JMenu
JMenu menu5 = new JMenu("TestSuite");
如何在Java Swing上做到这一点?我可以通过添加addActionListener(this)来捕获所有JMenuItem点击事件。但是这次不是JMenuItem,它是JMenu。
您可以使用ActionListener接口,就像在JButton上添加事件一样。
menu5.addActionListener(this);
其中“this”是在上面的示例中实现ActionListener接口的类的引用,它是相同的类。
添加你可以使用menu5.add(新菜单项(“菜单物品1”))
您可以将MenuListener
添加到JMenu
和监听menuSelected
事件菜单。这将允许您在弹出窗口可见之前动态地添加/删除菜单项到菜单。
如果他们使用加速键,添加鼠标侦听器将失败。 –
@BillK你不能将加速器添加到菜单中,我认为你的意思是“nomomics”。在这种情况下,MenuListener将被调用。正如我所建议的,您需要根据实际需求选择解决方案。菜单的设计不是以这种方式使用。 – camickr
许多程序根据状态添加和删除菜单项......仅仅因为您没有遇到一组要求,您可能不应该认为它们无效。 –
(1-)'当用户点击TestSuite并动态添加一些MenuItems .' - 这是一个糟糕的设计。你怎么知道用户何时想“添加一些MenuItems”或者他们是否想显示弹出式菜单?也许第一个菜单项应该是“添加更多...”菜单项。 – camickr
这是一个完全合乎逻辑的问题。不要认为它是“添加”菜单项,Marcus很可能想要根据当时的状态来动态地创建菜单的内容。他使用“添加”可能是对问题的简化。 –
@BillK,是的,我看你是否完全“重建”菜单,每次这是合理的。无论如何,我的评论是针对“添加”的规定。 – camickr