繁体   English   中英

如何检查Java中是否已存在系统托盘

[英]How to check if system tray already exists in Java

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

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

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

SystemTray javadoc确实说明了:

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

作为一般方法,应在它们之间隔离多个正在运行的JVM。
所以你的要求可能不应该通过耦合来解决。
如果您运行多次相同的应用程序,则应该接受每个应用程序具有完全相同的行为。
相反,如果您不希望允许多次同时运行同一个应用程序,则可以使用技巧在应用程序启动时在特定端口上打开ServerSocket连接。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM