如何检查Java

时间:2018-03-09 07:57:57

标签: java awt

有什么方法可以检查系统托盘是否已经存在?当我继续运行程序来创建系统托盘时,会出现多次出现,这意味着正在运行多个程序。那么,我需要检查系统托盘已经存在吗?

1 个答案:

答案 0 :(得分:4)

通过多个正在运行的应用程序检查托盘内容

您不能将SystemTray方法引用到当前应用程序的SystemTray 因此,不同的应用程序不会共享相同的SystemTray状态。

SystemTray javadoc确实说明了:

  

每个Java应用程序都有一个允许的SystemTray实例   应用程序与应用程序的桌面系统托盘连接   正在运行。

作为一般方法,应在它们之间隔离多个正在运行的JVM 所以你的要求可能不应该通过耦合它们来解决 如果您运行多次相同的应用程序,则应该接受每个应用程序具有完全相同的行为 相反,如果您不想允许多次同时运行相同的应用程序,则可以使用技巧打开ServerSocket连接on a specific port at the application startup

检查一个正在运行的应用程序中的托盘内容

您可以使用SystemTray.getTrayIcons()返回TrayIcon[]对象中应用程序添加到托盘中的实际图标。
您可以迭代数组元素并仅在找不到匹配项时添加TrayIcon

另请注意,如果您添加两次相同的TrayIcon实例,则应根据IllegalArgumentException方法抛出SystemTray.add()

else if (icons.contains(trayIcon)) {
    throw new IllegalArgumentException("adding TrayIcon that is already added");    
}