Quantcast
Channel: プログラム の個人的なメモ
Viewing all articles
Browse latest Browse all 860

【Java】Java で Windows の メッセージ通知を行うには...

$
0
0

■ サンプル

 * 画像「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系で実装した方がいいかも


Viewing all articles
Browse latest Browse all 860

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>