http://sattontanabe.blog86.fc2.com/blog-entry-24.html 基本的には java.awt.SystemTray; java.awt.TrayIcon; を使えば出来る。 private SystemTray tray = SystemTray.getSystemTray(); 略 ticon = new TrayIcon(image[0], frame.getTitle(), menu); tray.add(ticon); みたいな感じ。 !サンプル {{code Java import java.awt.AWTException; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Image; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.SystemTray; import java.awt.TrayIcon; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JFrame; import javax.swing.SwingUtilities; public class test { public static void main(String[] args) { new test(); } private JFrame frame; private PopupMenu menu; private TrayIcon ticon; private Image[] image; private SystemTray tray = SystemTray.getSystemTray(); private byte[] INSTANCE_LOCK = new byte[0]; public test() { init(); frame.setVisible(true); } public void init() { image = new Image[2]; // アイコンの設定 image[0] = new ImageIcon(ClassLoader.getSystemResource("tray_icon.gif")).getImage(); // 点滅アイコン image[1] = new ImageIcon(ClassLoader.getSystemResource("tray_icon_light.gif")).getImage(); initGUI(); } private void initGUI(){ // フレーム frame = new JFrame("タスクトレイにアイコンを表示・点滅"); frame.setSize(300, 100); frame.setIconImage(image[0]); // ウィンドウが最小化された時にタスクトレイに格納する // ようにWindowListenerクラスを追加。 frame.addWindowListener(new WindowAdapter() { public void windowIconified(WindowEvent e) { frame.setVisible(false); } }); JPanel jPanel = new JPanel(); jPanel.setLayout(new FlowLayout()); jPanel.setSize(new Dimension(219, 70)); JButton lightButton = new JButton("点滅"); lightButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { replaceImage(image[1]); displayMessage("メッセージ", "ここから出してくれ!!"); } }); JButton cancelButton = new JButton("解除"); cancelButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { replaceImage(image[0]); } }); jPanel.add(lightButton, null); jPanel.add(cancelButton, null); frame.add(jPanel); // 終了時処理。 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // フレームを画面中央に表示。 frame.setLocationRelativeTo(null); // メニュー createPopupMenu(); // タスクトレイを作成する。 createTray(); } private void createPopupMenu() { MenuItem getTrayItem = new MenuItem("タスクトレイから取り出す"); getTrayItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { active(); } }); MenuItem exitItem = new MenuItem("終了"); exitItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { removeTrayIcon(); frame.setVisible(false); frame.dispose(); System.exit(0); } }); menu = new PopupMenu(); menu.add(getTrayItem); menu.add(exitItem); } public void createTray() { // システム・トレイがサポートされていなければ終了。 if (!SystemTray.isSupported()) { return; } ticon = new TrayIcon(image[0], frame.getTitle(), menu); ticon.setImageAutoSize(true); ticon.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e) { if (SwingUtilities.isLeftMouseButton(e)) { active(); } } }); try { tray.add(ticon); } catch (AWTException e1) { e1.printStackTrace(); } } public void removeTrayIcon() { tray.remove(ticon); } public void displayMessage(String caption, String text) { if (caption != null || text != null) { ticon.displayMessage(caption, text, TrayIcon.MessageType.INFO); } } public void replaceImage(Image image) { synchronized (INSTANCE_LOCK) { if (!image.equals(ticon.getImage())) { ticon.setImage(image); } } } private void active() { // フレームの状態を通常に戻す。 frame.setExtendedState(JFrame.NORMAL); frame.setAlwaysOnTop(true); frame.setVisible(true); frame.setAlwaysOnTop(false); } } }} {{category2 プログラミング言語,Java}}