How to make a Windows Notification in Java

41,996

Solution 1

I can successfully produce this result using this very simple sample code:

screenshot

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

Solution 2

This can be achieved with the SystemTray and TrayIcon classes. Also, if this is a new API for you, you might want to check the dedicated tutorial "How to Use the System Tray".

Share:
41,996
Bill Nye
Author by

Bill Nye

Updated on July 13, 2020

Comments

  • Bill Nye
    Bill Nye almost 4 years

    In Windows 10 there is a notification that opens in the bottom right of the screen and I find them quite useful.

    Is there is any way to create Windows notifications in Java? This is what they look like:

    sample of windows notification desired

  • Bill Nye
    Bill Nye over 8 years
    One question how would i set the exclamation mark to it's own texture, i have seen other notifications with custom png files as there icons.
  • randers
    randers over 8 years
    It does not look like that's possible - that seems to be a feature not available in AWT, it's possibly only available in the native windows gui toolkits.
  • Blaine
    Blaine over 7 years
    Currently the notification is removed from the action center after it expires. Is there a way to keep it there?
  • Johannes Brodwall
    Johannes Brodwall over 3 years
    Super answer. Is there a way to stop the system tray icon from preventing JVM from exiting?
  • MrPowerGamerBR
    MrPowerGamerBR over 3 years
    @JohannesBrodwall if you remove the trayIcon from the tray (tray.remove(trayIcon)) the JVM will exit. Keep in mind that if you remove it while the notification is still open, the notification will magically disappear.