如何在Java中创建Windows通知

Bil*_*Nye 25 java notifications

在Windows 10中,屏幕右下方会显示一条通知,我发现它们非常有用.

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

需要Windows通知的样本

RAn*_*s00 46

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

截图

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 目前,通知在到期后将从操作中心删除.有办法保持它吗? (4认同)
  • @JohannesBrodwall 如果您从“tray”(“tray.remove(trayIcon)”)中删除“trayIcon”,JVM 将退出。请记住,如果您在通知仍然打开时将其删除,通知将“神奇地”消失。 (2认同)

Lol*_*olo 5

这可以通过SystemTrayTrayIcon类来实现。此外,如果这对您来说是一个新 API,您可能需要查看专门的教程“如何使用系统托盘”。