gpt4 book ai didi

java - 如何检查系统托盘是否已经存在于Java中

转载 作者:行者123 更新时间:2023-11-29 04:21:00 25 4
gpt4 key购买 nike

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

最佳答案

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

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

SystemTray javadoc 确实指出:

Every Java application has a single SystemTray instance that allows the app to interface with the system tray of the desktop while the app is running.

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

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

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

另外注意,如果你添加两次相同的TrayIcon实例,根据SystemTray.add()方法应该抛出一个IllegalArgumentException :

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

关于java - 如何检查系统托盘是否已经存在于Java中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49189090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com