Как создать и отобразить уведомление Windows 10 с помощью Java AWT

В Java довольно непонятно, как генерировать различные типы уведомлений или предупреждений. Некоторые разработчики предпочитают использовать JOptionPane, однако, когда вы работаете в фиксированной среде, например в Windows 10, довольно приятно использовать стили уведомлений по умолчанию в Windows, поэтому мы покажем вам приятный и короткий фрагмент для отображения уведомление Windows 10 легко с Java AWT.

Следующий код генерирует желаемое уведомление в системном трее, так что вы можете просто создать для него метод, обернуть его внутри кода или просто изменить текст предупреждений и все:

import java.awt.*;
import java.awt.event.*;
import java.awt.TrayIcon.MessageType;
import java.net.MalformedURLException;
try{
//Obtain only one instance of the SystemTray object
SystemTray tray = SystemTray.getSystemTray();
// If you want to create an icon in the system tray to preview
Image image = Toolkit.getDefaultToolkit().createImage("some-icon.png");
//Alternative (if the icon is on the classpath):
//Image image = Toolkit.getDefaultToolkit().createImage(getClass().getResource("icon.png"));
TrayIcon trayIcon = new TrayIcon(image, "Java AWT 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);
// Display info notification:
trayIcon.displayMessage("Hello, World", "Java Notification Demo", MessageType.INFO);
// Error:
// trayIcon.displayMessage("Hello, World", "Java Notification Demo", MessageType.ERROR);
// Warning:
// trayIcon.displayMessage("Hello, World", "Java Notification Demo", MessageType.WARNING);
}catch(Exception ex){
System.err.print(ex);
}

Обратите внимание, что выполнение кода должно выполняться с помощью оператора Try-Catch, который либо перехватывает 2 исключения, сгенерированные кодом (AWTException, MalformedURLException), либо общее исключение (как показано выше).

Структурированный пример

В следующем примере показан очень простой класс приложения, который рисует простую кнопку во фрейме. Когда кнопка нажата, появится уведомление в трее:

package sandbox;
import java.awt.*;
import java.awt.event.*;
import java.awt.TrayIcon.MessageType;
import java.net.MalformedURLException;
public class Sandbox {
/**
* Parsing a JSONObject string
*
* @param args
*/
public static void main(String[] args) {
Sandbox app = new Sandbox();
}
public Sandbox(){
Frame f = new Frame("Button Example");
Button btn = new Button("Click Here");
btn.setBounds(50,100,80,30);
f.add(btn);
f.setSize(400,400);
f.setLayout(null);
f.setVisible(true);
Sandbox _this = this;
btn.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
if (SystemTray.isSupported()) {
try{
_this.displayTray();
}catch(AWTException ex){
}catch(MalformedURLException ex){
}
} else {
System.err.println("System tray not supported!");
}
}
});
}
public void displayTray() throws AWTException, 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.getDefaultToolkit().createImage(getClass().getResource("icon.png"));
TrayIcon trayIcon = new TrayIcon(image, "Java AWT 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", "Java Notification Demo", MessageType.INFO);
}
}

Предыдущий код сгенерирует следующий кадр и отобразит уведомление:

Пример уведомления Java

Ссылка на основную публикацию