如果我先在Mac的Dock中单击该应用程序,然后选择从应用程序的系统托盘菜单中显示Alert。警报显示。没问题。 但是,如果我选择另一个应用程序(让我们说Chrome)。然后选择从应用程序的系统托盘菜单中显示警报,然后警报不会被带到前面。
也就是说,我必须在Dock上按RECLICK应用程序,然后警告显示。
我有一个JavaFX应用程序,并将其放在带有菜单的系统托盘中。
菜单有不同的东西:
final java.awt.PopupMenu popup = new java.awt.PopupMenu();
popup.add(aboutItem);
popup.addSeparator();
popup.add(settingsItem);
popup.addSeparator();
popup.add(printJobsItem);
popup.add(exitItem);
trayIcon.setPopupMenu(popup);
每个项目都设置了一个动作监听器:
aboutItem.addActionListener(event -> Platform.runLater(this::showAboutDialog));
settingsItem.addActionListener(event -> Platform.runLater(this::showSettingsStage));
//etc
为什么我必须激活'应用程序(通过选择操作系统的底座),以便显示showAboutDialog的警报?
如果我们使用Stage,那么这没问题。您可以切换到另一个应用程序或任何其他应用程序,并在您单击"设置"从应用程序的托盘菜单中,然后显示设置阶段。
刚刚在Windows 10上测试过,这种情况并没有发生。但是在OS X El Capitan上,它仍然在发生。