【发布时间】:2015-07-02 00:55:50
【问题描述】:
我正在尝试将子菜单添加到系统托盘的弹出菜单中的MenuItem。有什么办法可以做到这一点?我找到了一些关于子菜单的解决方案,但它们使用JMenuItem,而TrayIcon 只接受PopupMenu,它只接受MenuItems。
尝试通过MenuItem 实现这一目标:
【问题讨论】:
标签: java swing popup awt system-tray
我正在尝试将子菜单添加到系统托盘的弹出菜单中的MenuItem。有什么办法可以做到这一点?我找到了一些关于子菜单的解决方案,但它们使用JMenuItem,而TrayIcon 只接受PopupMenu,它只接受MenuItems。
尝试通过MenuItem 实现这一目标:
【问题讨论】:
标签: java swing popup awt system-tray
一个JMenuItem不支持子菜单,你需要使用另一个JMenu(加你JPopupMenu)。详情请见How to Use Menus
例如...
JPopupMenu popupMenu = new JPopupMenu();
JMenu deviceMenu = new JMenu("Add Device");
deviceMenu.add(new JMenuItem("Add More..."));
popupMenu.add(deviceMenu);
popupMenu.add(new JMenuItem("Delete Device"));
popupMenu.add(new JMenuItem("Fire"));
popupMenu.add(new JMenuItem("Fault"));
popupMenu.add(new JMenuItem("Supress"));
(显然,您仍然需要为所有这些添加插件功能)
并且 TrayIcon 只接受 PopupMenu,它只接受 MenuItems。
有个窍门,你要骗一点,看看How do I get a PopupMenu to show up when I left-click on a TrayIcon in Java?的例子
【讨论】:
popup.showVisible(false),但我不知道如何处理鼠标点击
当然,您只需在PopupMenu 中添加一个名为“Add Device”的Menu(Menu 是MenuItem 的子类,因此可以添加)。
PopupMenu popupMenu = new PopupMenu();
Menu subMenu = new Menu("Add Device");
subMenu.add(new MenuItem("Add More .."));
popupMenu.add(subMenu);
【讨论】: