如何捕获单击JMenu元素?

时间:2011-07-27 15:52:09

标签: java swing menu jmenu jmenuitem

我正在使用JMenuBar,JMenu和JMenuItem开发一个带有菜单的Java / Swing应用程序。

系统外观和下降应用于UI。

UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );

我的菜单中有几个顶级元素:

  • JMenu“文件”工作正常,允许用户选择JMenuItems“New”,“Open”等子菜单......

  • 然后,我想添加第二个顶级元素“关于”(与“文件”相同的级别),点击它时会显示一个弹出窗口。

问题很简单:如何使这个JMenu“关于”元素可点击?

我尝试了几种方法:

  1. 将“关于”元素设置为 JMenuItem 。但是,此元素与其他JMenu项目(如“文件”

  2. )的UI不同
  3. 将“关于”元素设置为 JMenu ,并在其上添加 MouseListener KeyListener 。此元素将具有与其他元素相同的UI,但我必须在“关于”弹出窗口的“确定”按钮上单击两次以捕获此事件。

  4. 还有其他解决方案吗?

1 个答案:

答案 0 :(得分:4)

我的第一个建议是在JMenu“关于”菜单中添加一个JMenuItem。因为这将与其他菜单的运行方式相匹配,并且看起来相同。当用户点击“关于”期待菜单但看到弹出窗口时,也就不足为奇了。应用程序在菜单栏的末尾有一个“帮助”菜单是相当常见的,菜单栏上有一个名为“关于”的菜单项,显示一个弹出窗口。菜单标题在点击时打开弹出窗口并不常见。

如果你真的必须做你的建议那么:

  • 指定外观(如Nimbus),并将JMenuItem修改为菜单项。

  • 找到第二种选择的方法。这听起来很可行,但可能需要进行一些调整,并且更难以让UI与系统外观一起使用。