SystemTray - основной класс, представляющий область уведомления. Основной метод класса – метод add, добавляющий объкт TrayIcon, который может выбрасывать исключение AWTException, есть метод remove, удаляющий объект TrayIcon, если в нем больше нет необходимости. Класс SystemTray основан на паттерне Singleton, поэтому доступ к области уведомления осуществляется с помощью статического метода getSystemTray, но для начала необходимо проверить поддерживает ли область уведомления данной платформой, проверку можно выполнить с помощью статического метода isSupported:
SystemTray tray = SystemTray.getSystemTray();
Класс TrayIcon предназначен для отображения пиктограмму в области уведомления (метод setImage). Класс может сам установить оптимальный размер иконки с помощью метода setImageAutoSize, что бывает очень полезно, т.к. не нужно заострять внимание на размере картинки. Кроме того класс TrayIcon может отображать всплывающую подсказку (метод setToolTip) и контекстное меню (метод setPopupMenu). Для установки значений можно воспользоваться конструкторами калсса:
TrayIcon(Image image)
TrayIcon(Image image, String tooltip)
TrayIcon(Image image, String tooltip, PopupMenu popup)
Конструктор класса, которые задает пиктограмму, всплывающую подстказку и контекстное меню.
Наконец, класс TrayIcon позволяет выводить уведомления с помощью метода displayMessage. Существует четыре типа уведомления
- TrayIcon.MessageType.ERROR
- TrayIcon.MessageType.INFO
- TrayIcon.MessageType.NONE
- TrayIcon.MessageType.WARNING
Код для отображения уведомления:
displayMessage("Заголовок", " Текст", TrayIcon.MessageType.INFO);
TrayIcon может быть источником событий MouseEvents, так же для объекта можно зарегистрировать обработчик ActionListener, который будет срабатывать при двойном щелчке по пиктограмме.
Теперь объединив все вышесказанное, приведу пример:
package com.blogspot.ldisplay;
import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SimpleTray {
public static void main(String[] args) {
if (!SystemTray.isSupported()) {
System.err.println("System tray is not supported.");
return;
}
SystemTray tray = SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().getImage("icon.png");
PopupMenu popup = new PopupMenu();
MenuItem exitItem = new MenuItem("Выход");
exitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
popup.add(exitItem);
final TrayIcon trayIcon = new TrayIcon(image, "Всплывающая подсказка", popup);
trayIcon.setImageAutoSize(true);
trayIcon.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
trayIcon.displayMessage("Заголовок",
"Текст сообщения",
TrayIcon.MessageType.INFO);
}
});
try {
tray.add(trayIcon);
} catch (AWTException ex) {
System.err.println("TrayIcon could not be added.");
}
}
}
Напоследок две ссылки на
API по SystemTray: http://java.sun.com/javase/6/docs/api/java/awt/SystemTray.html
API по TrayIcon: http://java.sun.com/javase/6/docs/api/java/awt/TrayIcon.html.
0 коммент.:
Отправить комментарий