システムトレイ
Java SE 6 からシステムトレイ (タスクトレイ) が利用できるようになりました。メール着信のお知らせツール (biff) やウィンドウレスで常駐するアプリケーションで便利な機能です。この機能は Windows, Macintosh, GNOME, KDE など、デスクトップ用途を前提としたウィンドウマネージャであれば大抵は利用可能です。ただし twm や CDE のように実用重視のウィンドウシステムでは使用できないものもあります。
Java のシステムトレイは以下の機能を利用できます。
- アイコンによる状態の通知
- ポップアップメッセージの表示
- ポップアップメニューの使用
- アクションリスナやマウスイベントリスナの追加
サンプル
// システムトレイが利用できる環境である事を確認
if(! SystemTray.isSupported()){
System.out.println("システムトレイは利用できません");
return;
}
// トレイアイコンの設定
final SystemTray tray = SystemTray.getSystemTray();
final TrayIcon icon = new TrayIcon(image);
icon.setToolTip("SystemTray Sample");
tray.add(icon);
// アイコンへのアクション
icon.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(
null, "アイコンのアクション");
}
});
// ポップアップメニューの設定
PopupMenu popup = new PopupMenu();
popup.add("あいうえお");
popup.add("かきくけこ");
popup.addSeparator();
MenuItem menu = new MenuItem("終了");
menu.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
tray.remove(icon);
System.exit(0);
}
});
popup.add(menu);
icon.setPopupMenu(popup);
// ポップアップメッセージの表示
icon.displayMessage("MOYO Laboratory", "メールが到着しています", MessageType.INFO);
ウィンドウマネージャごとの違い
環境によって利用できる領域の大きさが異なりますが TrayIcon#setImageAutoSize()
を使用すればそれぞれの大きさに自動フィットさせる事ができます。きちんと作るなら大きさの違うアイコンを何種類か用意しておいたほうが良いでしょう。
Windows XP | |
領域サイズ 16x16 | |
Solaris 10 | |
Java Desktop System (GNOME) 領域サイズ 24x24 |
|
CDE 利用不可 |
|
twm 利用不可 |
|
SuSE Linux 10 | |
GNOME 領域サイズ 24x24 |
|
KDE 領域サイズ 24x24 |
|
twm 利用不可 |