Java AWT SystemTray 图标和 OpenJDK 平台二进制文件问题

问题描述 投票:0回答:1

Java 22 JDK

主要是,我使用 TrayIcon.MessageType.NONE 调用 SystemNotificationUtil.notification() 方法

@Slf4j
public class SystemNotificationUtil {

    private static SystemTray tray;
    private static Image image;
    private static TrayIcon trayIcon;

    static {
        if (SystemTray.isSupported()) {
            tray = SystemTray.getSystemTray();
            image = Toolkit.getDefaultToolkit().createImage("favicon.ico");
            trayIcon = new TrayIcon(image, "Tray");

            trayIcon.setImageAutoSize(true);
            trayIcon.setToolTip("System tray demo");

            try {
                tray.add(trayIcon);
            } catch (AWTException e) {
                log.error("SystemNotificationUtil", e);
            }

        } else log.info("SystemNotificationUtil: System tray not supported");
    }

    public static void notification(String title, String message, TrayIcon.MessageType messageType) {
        trayIcon.displayMessage(title, message, messageType);
    }

enter image description here

enter image description here

问题:

  1. 警报来自 OpenJDK 二进制平台,而不是来自正在启动的应用程序

  2. 应用程序窗口中不显示应用程序图标

  3. 托盘中有一个空白区域而不是图标

我找到了一个解决方案,其中在某些实用程序的帮助下打包的java.exe,他们规定了一个不同的值而不是OpenJDK二进制平台,但我不想从事这种变态,并且它不会修复其他问题2 个问题。

如果无法以某种方式摆脱这个问题,也许你可以推荐一些其他库?

对于上下文,关于可执行文件:使用launch4j-maven-plugin,我将jar打包成exe,依赖项和JDK只是转移到目标

编辑:也许有人知道如何使用这个?

<dependency>
    <groupId>de.mobanisto</groupId>
    <artifactId>toast4j</artifactId>
    <version>0.2.0</version>
</dependency>

lib 仓库

从简短的自述文件中,我意识到这是访问“新”Windows API 以显示通知的依赖项,但我仍然不知道如何使用它,也许它可以解决我的问题

java awt system-tray
1个回答
0
投票

遗憾的是,AWT 使用了 20 年前的 Windows API,而不是新的 API。 每个操作系统都存在问题,并且存在各种错误,但现在 AWT 已经不再关心了。

Oracle 放弃了它,即使他们不想承认。 Oracle 对此感到羞耻。

https://bugs.java.com/bugdatabase/view_bug?bug_id=JDK-8323977
https://bugs.java.com/bugdatabase/view_bug?bug_id=JDK-8341173
https://bugs.java.com/bugdatabase/view_bug?bug_id=JDK-8323821
https://bugs.java.com/bugdatabase/view_bug?bug_id=JDK-8310352
https://bugs.java.com/bugdatabase/view_bug?bug_id=JDK-8341144
© www.soinside.com 2019 - 2024. All rights reserved.