创建Windows 10持久通知

5
我已经成功地在 Windows 10 操作中心中使用此答案创建了一个通知弹窗。问题是,通知会停留5秒钟,然后一旦它消失,就会从操作中心中删除。我该如何使操作中心保留通知直到用户关闭它?以下是代码:
import java.awt.*;
import java.awt.TrayIcon.MessageType;

import javax.swing.JOptionPane;

public class Win10Notif {

    public static void main(String[] args) throws AWTException, java.net.MalformedURLException {

        if (SystemTray.isSupported()) {
            Win10Notif td = new Win10Notif();
            td.displayTray();
        } else {
            System.err.println("System tray not supported!");
        }
    }


    public void displayTray() throws AWTException, java.net.MalformedURLException {
        //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.getToolkit().createImage(getClass().getResource("icon.png"));
        TrayIcon trayIcon = new TrayIcon(image, "Tray Demo");
        //Let the system resizes 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);
    }
}
1个回答

2
我认为这是由Windows自身或JVM的本地实现管理的。至少,公共API没有提供在屏幕上设置特定时间的通知选项。
除非您需要固定在操作中心,否则您可以考虑使用外部库进行桌面通知,例如以下内容:
  • JCarrierPigeon:它很小,速度很快;虽然它依赖于Timing Framework库。它带来的API也很小。
  • JTelegraphJCarrierPigeon的扩展,包含一些开箱即用的图标和样式。自然地,这个也依赖于Timing Framework库。
  • JCommunique:最完整的选项之一,意味着更大的占用空间;但至少它没有依赖关系,并且非常灵活,涵盖了许多使用场景。
  • Twinkle:它很时尚,但不太轻便。开箱即用包括图标、动画和其他资源。代码在编译时有一些依赖关系,但我认为可分发的.jar已经捆绑了所有东西。免费供非商业用途。
  • DS Desktop Notify:它很小,轻便,易于设置,没有依赖关系。可以像JOptionpane.showMessageDialog()一样使用,或者在手动发布通知对象之前构建和自定义它们。属性如颜色主题、图标、屏幕上的时间和操作都可以自定义,还提供了一些开箱即用的主题和图标。
你可以免费获取并尝试其中任何一个。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接