java - Opret Windows 10 vedvarende underretninger

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har oprettet en meddelelse, der pop op i vinduet 10 actioncenter, ved hjælp af dette svar. Problemet er, at meddelelsen forbliver der i 5 sekunder, og så en gang den forsvinder, fjernes det helt fra handlingscentret. Hvordan kan jeg få actioncenteret til at holde anmeldelsen, indtil brugeren afviser det? Her er koden:


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);
    }
}

Bedste reference


Jeg tror, ​​at 's styres af Windows selv eller den oprindelige implementering af JVM. I det mindste giver den offentlige API ikke mulighed for at indstille en bestemt tid på skærmen til meddelelserne.


Medmindre du skal holde dig til actioncenteret, kan du overveje at bruge eksterne biblioteker til skrivebordsbeskeder, som disse:



  • JCarrierPigeon: Det er lille, og det er hurtigt; selv om det har afhængigheder på Timing Framework-biblioteket. Selv API'en det bringer er lille.

  • JTelegraph: En udvidelse af JCarrierPigeon, med nogle lagerikoner og stilarter ud af kassen. Naturligvis afhænger denne også af Timing Framework-biblioteket.

  • JCommunique: En af de mest komplette muligheder, hvilket betyder et større fodaftryk; men i det mindste har denne ingen afhængigheder, og det er meget fleksibelt og dækker mange brugsscenarier.

  • Twinkle: Det er stilfuldt, men ikke så let. Inkluderer ikoner, animationer og andre ressourcer ud af kassen. Koden har nogle afhængigheder i kompileringstid, men jeg tror, ​​at den distribuerende .jar kommer med alt sammenbundet. er gratis til ikke-kommercielle formål.

  • DS Desktop Notify: Den er lille, letvægts, nem at konfigurere og har ingen afhængigheder. Den kan bruges på samme måde som JOptionpane.showMessageDialog() eller ved at opbygge og tilpasse underretningsobjekter, før de bogføres manuelt. som farve temaer, ikoner, tid på skærmen og handlinger kan tilpasses, også lager temaer og ikoner leveres.



Du kan få fat i og prøve nogen af ​​disse gratis. [4] [5] [6] [7] [8] [9]