モジュール java.desktop
パッケージ java.awt

クラスSystemTray


  • public class SystemTray
    extends Object
    SystemTrayクラスは、デスクトップのシステム・トレイを表します。 Microsoft Windowsでは、「タスク・バーのステータス領域」、Gnomeでは「通知スペース」、KDEでは「システム・トレイ」と呼ばれます。 システム・トレイは、デスクトップで実行しているすべてのアプリケーションで共有されます。

    一部のプラットフォームでは、システム・トレイが存在しなかったり、サポートされていなかったりすることがあります。この場合、getSystemTray()UnsupportedOperationExceptionをスローします。 システム・トレイがサポートされているかどうかを検出するには、isSupported()を使用します。

    SystemTrayには、1つ以上のTrayIconsを格納できます。TrayIconは、add(java.awt.TrayIcon)メソッドを使用してトレイに追加し、不要になったらremove(java.awt.TrayIcon)メソッドを使用して削除します。 TrayIconは、イメージ、ポップアップ・メニューおよび関連するリスナーのセットで構成されます。 詳細は、TrayIconクラスを参照してください。

    各Javaアプリケーションには、SystemTrayインスタンスが1つあり、アプリケーションは実行中にデスクトップのシステム・トレイとやり取りすることができます。 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
    • メソッドの詳細

      • getSystemTray

        public static SystemTray getSystemTray()
        デスクトップのトレイ領域を表すSystemTrayインスタンスを取得します。 アプリケーションごとに同じインスタンスを常に返します。 一部のプラットフォームでは、システム・トレイがサポートされていない場合があります。 isSupported()メソッドを使用すると、システム・トレイがサポートされているかどうかを確認できます。

        SecurityManagerがインストールされている場合、SystemTrayインスタンスを取得するには、AWTPermission accessSystemTrayが許可されている必要があります。 そうでない場合、このメソッドはSecurityExceptionをスローします。

        戻り値:
        デスクトップのトレイ領域を表すSystemTrayインスタンス
        例外:
        UnsupportedOperationException - システム・トレイが現在のプラットフォームでサポートされていない場合
        HeadlessException - GraphicsEnvironment.isHeadless()trueを返す場合
        SecurityException - accessSystemTrayアクセス権が許可されない場合
        関連項目:
        add(TrayIcon), TrayIcon, isSupported(), SecurityManager.checkPermission(java.security.Permission), AWTPermission
      • isSupported

        public static boolean isSupported()
        システム・トレイが現在のプラットフォームでサポートされているかどうかを返します。 トレイ・アイコンを表示するだけでなく、システム・トレイの最小限のサポートにはポップアップ・メニュー(TrayIcon.setPopupMenu(PopupMenu)を参照してください)またはアクション・イベント(TrayIcon.addActionListener(ActionListener)を参照してください)が含まれます。

        開発者は、すべてのシステム・トレイ機能がサポートされていると想定しないでください。 トレイ・アイコンのデフォルト・アクションに常にアクセス可能であることを保証するために、デフォルト・アクションをアクション・リスナーとポップアップ・メニューの両方に追加します。 その方法の例については、exampleを参照してください。

        : SystemTrayおよびTrayIconを実装するときは、ポップアップ・メニューとアクション・イベントに異なるジェスチャを割り当てることを強くお薦めします 両方に1つのジェスチャをオーバーロードすると、混乱が生じ、ユーザーが一方にアクセスできない可能性があります。

        戻り値:
        システム・トレイ・アクセスがサポートされていない場合はfalse。最小限のシステム・トレイ・アクセスがサポートされているが、現在のプラットフォームですべてのシステム・トレイ機能がサポートされている保証がない場合はtrueを返す
        関連項目:
        getSystemTray()
      • add

        public void add​(TrayIcon trayIcon)
                 throws AWTException
        SystemTrayTrayIconを追加します。 トレイ・アイコンは、追加するとシステム・トレイで可視状態になります。 アイコンがトレイで表示される順序は指定されません。プラットフォームと実装に依存します。

        アプリケーションによって追加されたすべてのアイコンが、そのアプリケーションの終了時にSystemTrayから自動的に削除されます。また、デスクトップのシステム・トレイが使用できなくなったときにも自動的に削除されます。

        パラメータ:
        trayIcon - 追加されるTrayIcon
        例外:
        NullPointerException - trayIconnullである場合
        IllegalArgumentException - TrayIconの同じインスタンスが複数回追加された場合
        AWTException - デスクトップのシステム・トレイが見つからない場合
        関連項目:
        remove(TrayIcon), getSystemTray(), TrayIcon, Image
      • remove

        public void remove​(TrayIcon trayIcon)
        SystemTrayから指定されたTrayIconを削除します。

        アプリケーションによって追加されたすべてのアイコンが、そのアプリケーションの終了時にSystemTrayから自動的に削除されます。また、デスクトップのシステム・トレイが使用できなくなったときにも自動的に削除されます。

        trayIconnullの場合、またはシステム・トレイに追加されなかった場合は、例外はスローされず、何も処理は行われません。

        パラメータ:
        trayIcon - 削除するTrayIcon
        関連項目:
        add(TrayIcon), TrayIcon
      • getTrayIcons

        public TrayIcon[] getTrayIcons()
        このアプリケーションによってトレイに追加されたすべてのアイコンの配列を返します。 別のアプリケーションによって追加されたアイコンにはアクセスできません。 一部のブラウザは、異なるコード・ベースのアプレットを別のコンテキストに分割し、これらのコンテキストの間に壁を構築します。 このような場合、このコンテキストから追加されたトレイ・アイコンだけが返されます。

        返される配列は、実際の配列のコピーであり、システム・トレイに影響しない方法で変更できます。 TrayIconSystemTrayから削除するには、remove(TrayIcon)メソッドを使用してください。

        戻り値:
        このトレイに追加されたすべてのトレイ・アイコンの配列、または追加されたアイコンがない場合は空の配列
        関連項目:
        add(TrayIcon), TrayIcon
      • getTrayIconSize

        public Dimension getTrayIconSize()
        システム・トレイでトレイ・アイコンが占める領域のサイズ(ピクセル単位)を返します。 開発者は、このメソッドを使用すると、トレイ・アイコンを作成する前に、トレイ・アイコンのイメージ・プロパティの推奨サイズを取得できます。 便宜のため、類似したメソッドであるTrayIcon.getSize()TrayIconクラスにも用意されています。
        戻り値:
        トレイ・アイコンのデフォルト・サイズ(ピクセル単位)
        関連項目:
        TrayIcon.setImageAutoSize(boolean), Image, TrayIcon.getSize()
      • addPropertyChangeListener

        public void addPropertyChangeListener​(String propertyName,
                                              PropertyChangeListener listener)
        特定のプロパティのリスナーのリストにPropertyChangeListenerを追加します。 現在サポートされているプロパティは次のとおりです。
        SystemTrayのプロパティ
        プロパティ 説明
        trayIcons このSystemTrayTrayIconオブジェクトの配列。 この配列は、getTrayIcons()メソッドを使用してアクセスされます。 このプロパティは、トレイ・アイコンをシステム・トレイに対して追加(または削除)すると変更されます。 たとえば、システム・トレイがデスクトップで利用不可能になって、トレイ・アイコンが自動的に削除されると、このプロパティは変更されます。
        systemTray このプロパティには、システム・トレイが使用可能な場合はSystemTrayインスタンス、それ以外の場合はnullが格納されます。 このプロパティは、システム・トレイがデスクトップで使用可能または使用不可になると変更されます。 このプロパティは、getSystemTray()メソッドを使用してアクセスされます。

        listenerは、このコンテキストでのプロパティの変更だけを待機します。

        listenernullである場合、例外はスローされず、何も処理は行われません。

        パラメータ:
        propertyName - 指定されたプロパティ
        listener - 追加されるプロパティ変更リスナー
        関連項目:
        removePropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener), getPropertyChangeListeners(java.lang.String)