Javaでシステムトレイに常駐するプログラムを作成する機会があったので、サンプルコードを紹介します。
サンプルコードの概要
- システムトレイに常駐するプログラムを作成する
- アイコンには指定のpngファイルを利用する
- アイコンを右クリックするとポップアップメニューが表示される
- Helloメニューを押下すると、通知を表示する
- Exitメニューを押下すると、プログラムが終了し、システムトレイからアイコンが削除される
サンプルコード
Main.java
import java.awt.AWTException;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.TrayIcon.MessageType;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
public class Main {
public static void main(String[] args) {
try (InputStream is = Main.class.getResourceAsStream("icon.png")) {
TrayIcon trayIcon = new TrayIcon(ImageIO.read(is), "Sample App");
trayIcon.setImageAutoSize(true);
MenuItem menuItem1 = new MenuItem("Hello");
menuItem1.addActionListener(e -> {
trayIcon.displayMessage("Press Hello Button", "Hello World!", MessageType.INFO);
});
MenuItem menuItem2 = new MenuItem("Exit");
menuItem2.addActionListener(e -> {
System.exit(0);
});
PopupMenu popupMenu = new PopupMenu();
popupMenu.add(menuItem1);
popupMenu.add(menuItem2);
trayIcon.setPopupMenu(popupMenu);
SystemTray.getSystemTray().add(trayIcon);
} catch (IOException | AWTException e) {
e.printStackTrace();
}
}
}
実行例
このサンプルコードを実行すると、システムトレイにアイコンが表示されます。
アイコンを右クリックすると、ポップアップメニューが表示されます。
Helloメニューを押下すると、通知が表示されます。
Exitメニューを押下すると、プログラムが終了します。
環境情報
D:\>java -version
openjdk version "21.0.3" 2024-04-16 LTS
OpenJDK Runtime Environment Temurin-21.0.3+9 (build 21.0.3+9-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.3+9 (build 21.0.3+9-LTS, mixed mode, sharing)
D:\>javac -version
javac 21.0.3
D:\>ver
Microsoft Windows [Version 10.0.22631.3880]