システムトレイ

Takami Torao Java 6
  • このエントリーをはてなブックマークに追加
システムトレイ

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
Windows XP 領域サイズ 16x16
 
Solaris 10
Solaris 10 (Java Desktop System) Java Desktop System (GNOME)
領域サイズ 24x24
CDE
利用不可
twm
利用不可
 
SuSE Linux 10
SuSE Linux 10 (GNOME) GNOME
領域サイズ 24x24
SuSE Linux 10 (KDE) KDE
領域サイズ 24x24
twm
利用不可