如何在Java中生成Windows通知

如何在Java中生成Windows通知,java,notifications,Java,Notifications,在Windows10中,屏幕右下角会打开一个通知,我发现它们非常有用 有没有办法用Java创建Windows通知?这就是它们的样子: 我可以使用以下非常简单的示例代码成功生成此结果: 我可以使用以下非常简单的示例代码成功生成此结果: 这可以通过和类来实现。此外,如果这是一个新的API,您可能需要查看专用教程“这可以通过和类实现。另外,如果这是一个新的API,您可能需要查看专门的教程。“有一个问题,我如何将感叹号设置为它自己的纹理,我看到了其他带有自定义png文件的通知,这些图标。这看起来不可

在Windows10中,屏幕右下角会打开一个通知,我发现它们非常有用

有没有办法用Java创建Windows通知?这就是它们的样子:


我可以使用以下非常简单的示例代码成功生成此结果:


我可以使用以下非常简单的示例代码成功生成此结果:


这可以通过和类来实现。此外,如果这是一个新的API,您可能需要查看专用教程“

这可以通过和类实现。另外,如果这是一个新的API,您可能需要查看专门的教程。“

有一个问题,我如何将感叹号设置为它自己的纹理,我看到了其他带有自定义png文件的通知,这些图标。这看起来不可能-这似乎是AWT中不可用的功能,它可能仅在本机windows gui工具包中可用。当前,通知在过期后将从操作中心中删除。有没有办法让它保持在那里?超级答案。有没有办法阻止系统托盘图标阻止JVM退出?@JohannesBrodwall如果从
托盘中移除
trayIcon
tray.remove(trayIcon)
),JVM将退出。请记住,如果在通知仍处于打开状态时将其删除,通知将神奇地消失。有一个问题是,我如何将感叹号设置为其自身的纹理,我见过其他带有自定义png文件的通知,这些图标。这看起来不可能-这似乎是AWT中不可用的功能,它可能仅在本机windows gui工具包中可用。当前,通知在过期后将从操作中心中删除。有没有办法让它保持在那里?超级答案。有没有办法阻止系统托盘图标阻止JVM退出?@JohannesBrodwall如果从
托盘中移除
trayIcon
tray.remove(trayIcon)
),JVM将退出。请记住,如果在通知仍处于打开状态时将其删除,通知将神奇地消失。
import java.awt.*;
import java.awt.TrayIcon.MessageType;

public class TrayIconDemo {

    public static void main(String[] args) throws AWTException {
        if (SystemTray.isSupported()) {
            TrayIconDemo td = new TrayIconDemo();
            td.displayTray();
        } else {
            System.err.println("System tray not supported!");
        }
    }

    public void displayTray() throws AWTException {
        //Obtain only one instance of the SystemTray object
        SystemTray tray = SystemTray.getSystemTray();

        //If the icon is a file
        Image image = Toolkit.getDefaultToolkit().createImage("icon.png");
        //Alternative (if the icon is on the classpath):
        //Image image = Toolkit.getDefaultToolkit().createImage(getClass().getResource("icon.png"));

        TrayIcon trayIcon = new TrayIcon(image, "Tray Demo");
        //Let the system resize the image if needed
        trayIcon.setImageAutoSize(true);
        //Set tooltip text for the tray icon
        trayIcon.setToolTip("System tray icon demo");
        tray.add(trayIcon);

        trayIcon.displayMessage("Hello, World", "notification demo", MessageType.INFO);
    }
}