Spec-Zone.ru › OpenJDK 25

Класс SystemTray

java.lang.Object
java.awt.SystemTray
public class SystemTray extends Object
Класс SystemTray представляет системную область уведомлений рабочего стола. В Microsoft Windows она называется «Область уведомлений панели задач», в Gnome — «Область уведомлений», а в KDE — «Системный трей». Системная область уведомлений является общей для всех приложений, запущенных на рабочем столе.

На некоторых платформах системная область уведомлений может отсутствовать или не поддерживаться. В этом случае метод getSystemTray() выбрасывает исключение UnsupportedOperationException. Чтобы определить, поддерживается ли системная область уведомлений, используйте метод isSupported().

SystemTray может содержать один или несколько объектов TrayIcons, которые добавляются в область уведомлений с помощью метода add(TrayIcon) и удаляются, когда в них больше нет необходимости, с помощью метода remove(TrayIcon). TrayIcon состоит из изображения, всплывающего меню и набора связанных с ним прослушивателей. Подробности см. в описании класса TrayIcon.

У каждого Java-приложения есть единственный экземпляр SystemTray, который позволяет приложению взаимодействовать с системной областью уведомлений рабочего стола во время работы приложения. Экземпляр SystemTray можно получить с помощью метода getSystemTray(). Приложение не может создать собственный экземпляр SystemTray.

В следующем фрагменте кода показано, как получить доступ к системной области уведомлений и настроить её:


    TrayIcon trayIcon = null;
    if (SystemTray.isSupported()) {
        // get the SystemTray instance
        SystemTray tray = SystemTray.getSystemTray();
        // load an image
        Image image = Toolkit.getDefaultToolkit().getImage(...);
        // create a action listener to listen for default action executed on the tray icon
        ActionListener listener = new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // execute default action of the application
                // ...
            }
        };
        // create a popup menu
        PopupMenu popup = new PopupMenu();
        // create menu item for the default action
        MenuItem defaultItem = new MenuItem(...);
        defaultItem.addActionListener(listener);
        popup.add(defaultItem);
        /// ... add other items
        // construct a TrayIcon
        trayIcon = new TrayIcon(image, "Tray Demo", popup);
        // set the TrayIcon properties
        trayIcon.addActionListener(listener);
        // ...
        // add the tray image
        try {
            tray.add(trayIcon);
        } catch (AWTException e) {
            System.err.println(e);
        }
        // ...
    } else {
        // disable tray option in your application or
        // perform other actions
        ...
    }
    // ...
    // some time later
    // the application state has changed - update the image
    if (trayIcon != null) {
        trayIcon.setImage(updatedImage);
    }
    // ...

Версия:
1.6
См. также:
  • TrayIcon

Краткое описание методов

Модификатор и тип Метод Описание
void add(TrayIcon trayIcon)
Добавляет TrayIcon в SystemTray.
void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
Добавляет PropertyChangeListener в список прослушивателей указанного свойства.
PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
Возвращает массив всех прослушивателей, связанных с указанным свойством.
static SystemTray getSystemTray()
Возвращает экземпляр SystemTray, представляющий область уведомлений рабочего стола.
TrayIcon[] getTrayIcons()
Возвращает массив всех значков, добавленных в область уведомлений этим приложением.
Dimension getTrayIconSize()
Возвращает размер в пикселях области, которую значок будет занимать в системной области уведомлений.
static boolean isSupported()
Возвращает сведения о том, поддерживается ли системная область уведомлений на текущей платформе.
void remove(TrayIcon trayIcon)
Удаляет указанный TrayIcon из SystemTray.
void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
Удаляет PropertyChangeListener из списка прослушивателей указанного свойства.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание методов

getSystemTray

public static SystemTray getSystemTray()
Возвращает экземпляр SystemTray, представляющий область уведомлений рабочего стола. Для каждого приложения всегда возвращается один и тот же экземпляр. На некоторых платформах системная область уведомлений может не поддерживаться. Чтобы проверить, поддерживается ли системная область уведомлений, можно воспользоваться методом isSupported().
Возвращает:
экземпляр SystemTray, представляющий область уведомлений рабочего стола
Выбрасывает:
UnsupportedOperationException — если системная область уведомлений не поддерживается текущей платформой
HeadlessException — если GraphicsEnvironment.isHeadless() возвращает true
См. также:
  • add(TrayIcon)
  • TrayIcon
  • isSupported()

isSupported

public static boolean isSupported()
Возвращает сведения о том, поддерживается ли системная область уведомлений на текущей платформе. Минимальная поддержка системной области уведомлений, помимо отображения значка, включает всплывающее меню (см. TrayIcon.setPopupMenu(PopupMenu)) или событие действия (см. TrayIcon.addActionListener(ActionListener)).

Разработчикам не следует предполагать, что поддерживаются все функции системной области уведомлений. Чтобы гарантировать постоянную доступность действия по умолчанию для значка, добавьте это действие и в прослушиватель действий, и во всплывающее меню. Пример см. в описании класса example.

Примечание: при реализации SystemTray и TrayIcon настоятельно рекомендуется назначать разные жесты для всплывающего меню и события действия. Использование одного жеста для обеих целей сбивает с толку и может помешать пользователю получить доступ к одной из этих функций.

Возвращает:
false, если доступ к системной области уведомлений не поддерживается; метод возвращает true, если поддерживается минимальный доступ к системной области уведомлений, однако это не гарантирует поддержку всех её функций на текущей платформе
См. также:
  • getSystemTray()

add

public void add(TrayIcon trayIcon) throws AWTException
Добавляет TrayIcon в SystemTray. После добавления значок становится видимым в системной области уведомлений. Порядок отображения значков в области уведомлений не определён и зависит от платформы и реализации.

Все значки, добавленные приложением, автоматически удаляются из SystemTray при завершении приложения, а также когда системная область уведомлений рабочего стола становится недоступной.

Параметры:
trayIcon — добавляемый TrayIcon
Выбрасывает:
NullPointerException — если trayIcon имеет значение null
IllegalArgumentException — если один и тот же экземпляр TrayIcon добавляется более одного раза
AWTException — если системная область уведомлений рабочего стола отсутствует
См. также:
  • remove(TrayIcon)
  • getSystemTray()
  • TrayIcon
  • Image

remove

public void remove(TrayIcon trayIcon)
Удаляет указанный TrayIcon из SystemTray.

Все значки, добавленные приложением, автоматически удаляются из SystemTray при завершении приложения, а также когда системная область уведомлений рабочего стола становится недоступной.

Если trayIcon имеет значение null или не был добавлен в системную область уведомлений, исключение не выбрасывается и никаких действий не выполняется.

Параметры:
trayIcon — удаляемый TrayIcon
См. также:
  • add(TrayIcon)
  • TrayIcon

getTrayIcons

public TrayIcon[] getTrayIcons()
Возвращает массив всех значков, добавленных в область уведомлений этим приложением. Получить доступ к значкам, добавленным другим приложением, нельзя. Некоторые браузеры разделяют апплеты с разными базами кода на отдельные контексты и изолируют эти контексты друг от друга. В таком случае возвращаются только значки области уведомлений, добавленные в этом контексте.

Возвращаемый массив является копией исходного массива и может быть изменён любым способом без влияния на системную область уведомлений. Чтобы удалить TrayIcon из SystemTray, используйте метод remove(TrayIcon).

Возвращает:
массив всех значков, добавленных в эту область уведомлений, или пустой массив, если ни одного значка не добавлено
См. также:
  • add(TrayIcon)
  • TrayIcon

getTrayIconSize

public Dimension getTrayIconSize()
Возвращает размер в пикселях области, которую значок будет занимать в системной области уведомлений. Разработчики могут использовать этот метод, чтобы узнать рекомендуемый размер значка до его создания. Для удобства в классе TrayIcon имеется аналогичный метод TrayIcon.getSize().
Возвращает:
размер значка по умолчанию в пикселях
См. также:
  • TrayIcon.setImageAutoSize(boolean)
  • Image
  • TrayIcon.getSize()

addPropertyChangeListener

public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
Добавляет PropertyChangeListener в список прослушивателей указанного свойства. В настоящее время поддерживаются следующие свойства:
Свойства SystemTray
Свойство Описание
trayIcons Массив объектов TrayIcon для SystemTray. Доступ к массиву осуществляется с помощью метода getTrayIcons(). Это свойство изменяется при добавлении значка в системную область уведомлений или удалении значка из неё. Например, свойство изменяется, когда системная область уведомлений рабочего стола становится недоступной и значки автоматически удаляются.
systemTray Это свойство содержит экземпляр SystemTray, если системная область уведомлений доступна, и null в противном случае. Свойство изменяется, когда системная область уведомлений рабочего стола становится доступной или недоступной. Доступ к свойству осуществляется с помощью метода getSystemTray().

listener отслеживает изменения свойств только в этом контексте.

Если listener имеет значение null, исключение не выбрасывается и никаких действий не выполняется.

Параметры:
propertyName — указанное свойство
listener — добавляемый прослушиватель изменений свойства
См. также:
  • removePropertyChangeListener(String, PropertyChangeListener)
  • getPropertyChangeListeners(String)

removePropertyChangeListener

public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
Удаляет PropertyChangeListener из списка прослушивателей указанного свойства.

PropertyChangeListener должен относиться к этому контексту.

Если propertyName или listener имеет значение null либо недопустимо, исключение не выбрасывается и никаких действий не выполняется.

Параметры:
propertyName — указанное свойство
listener — удаляемый PropertyChangeListener
См. также:
  • addPropertyChangeListener(String, PropertyChangeListener)
  • getPropertyChangeListeners(String)

getPropertyChangeListeners

public PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
Возвращает массив всех прослушивателей, связанных с указанным свойством.

Возвращаются только прослушиватели из этого контекста.

Параметры:
propertyName — указанное свойство
Возвращает:
все PropertyChangeListener, связанные с указанным свойством; если такие прослушиватели не добавлены либо propertyName имеет значение null или недопустимо, возвращается пустой массив
См. также:
  • addPropertyChangeListener(String, PropertyChangeListener)
  • removePropertyChangeListener(String, PropertyChangeListener)

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, способы обхода проблем и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/SystemTray.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API