如何将子菜单添加到 MenuItem

How to add submenu to MenuItem

我正在尝试将子菜单添加到系统托盘弹出菜单中的 MenuItem。有什么办法可以做到这一点?我找到了一些关于子菜单的解决方案,但它们使用 JMenuItem,而 TrayIcon 只接受 PopupMenu,而 PopupMenu 只接受 MenuItem

尝试通过 MenuItem 实现此目标:

一个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"));

(显然,您仍然需要为所有这些插件功能)

and TrayIcon only accepts PopupMenu which only accepts MenuItems.

有个窍门,要骗一点,看How do I get a PopupMenu to show up when I left-click on a TrayIcon in Java?的例子

当然,你只是在PopupMenu中添加一个名为"Add Device"的MenuMenuMenuItem的子类,所以可以添加).

PopupMenu popupMenu = new PopupMenu();
Menu subMenu = new Menu("Add Device");
subMenu.add(new MenuItem("Add More .."));
popupMenu.add(subMenu);