■ サンプル
* 画像「icon.png」は resources内に配置しておく
Main.java
import java.awt.AWTException; import java.awt.Image; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.SystemTray; import java.awt.Toolkit; import java.awt.TrayIcon; import java.awt.TrayIcon.MessageType; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.URL; public class Main { public static void main(String[] args) { System.out.println("Enter"); SystemTray systemTray = SystemTray.getSystemTray(); URL url = ClassLoader.getSystemResource("icon.png"); Image image = Toolkit.getDefaultToolkit().createImage(url); PopupMenu popup = new PopupMenu(); TrayIcon trayIcon = new TrayIcon(image, "Hello World", popup); trayIcon.setImageAutoSize(true); trayIcon.setToolTip("System tray icon tooltip"); MenuItem exitMenuItem = new MenuItem("Exit"); exitMenuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent event) { // メニューが選択された System.out.println("Clicked!"); systemTray.remove(trayIcon); System.exit(0); } }); popup.add(exitMenuItem); try { systemTray.add(trayIcon); } catch (AWTException ex) { ex.printStackTrace(); } trayIcon.displayMessage("Hello, World", "notification demo", MessageType.INFO); trayIcon.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent event) { // アイコンがダブルクリックされる System.out.println("Clicked!!"); systemTray.remove(trayIcon); System.exit(0); } }); System.out.println("Exit"); } }
個人的な感想
* WindowsならJavaより.NET系で実装した方がいいかも