Javaでシステムトレイ機能を実装する方法。
図の例
プロジェクトパッケージ構造図
システム動作のスクリーンショット
コア ロジックの説明を適用すると、トレイの非表示は基本的にフォームの非表示、つまり setVisible(false) を意味し、フォームの表示は setVisible(true) を意味します。
プロジェクトのコードは次のとおりです。
インポートjava.awt.AWTException;
java.awt.MenuItemをインポートします。
インポートjava.awt.PopupMenu;
インポート java.awt.SystemTray;
java.awt.TrayIcon をインポートします。
インポートjava.awt.event.ActionEvent;
インポート java.awt.event.ActionListener;
java.net.URLをインポートします。
インポート javax.swing.ImageIcon;
javax.swing.JFrameをインポートします。
インポートjavax.swing.JMenu;
インポート javax.swing.JMenuBar;
javax.swing.JMenuItemをインポートします。
public class MainFrame extends JFrameimplementes ActionListener{
プライベート静的最終ロングシリアルバージョンUID = -7078030311369039390L;
プライベート JMenu メニュー;
プライベート JMenuBar jmenuBar;
private String [] jmItemName = {"トレイに置く","システム終了"};
public MainFrame(){
super("電話帳");
init();
this.setSize(500,400);
this.setJMenuBar(jmenuBar);
this.setLocationRelativeTo(null);
systemTray(); //システムトレイ
}
/**
* 初期化インターフェース
*/
パブリック void init(){
menu = new JMenu("システム フォーム");
for(int i=0; i<jmItemName.length; i++){
JMenuItem menuItem = new JMenuItem(jmItemName[i]);
menuItem.addActionListener(this);
menu.add(menuItem);
}
this.jmenuBar = 新しい JMenuBar();
this.jmenuBar.add(メニュー);
}
@オーバーライド
public void actionPerformed(ActionEvent e) {
文字列アクション = e.getActionCommand();
if("トレイに置く".equals(actions)){
this.setVisible(false);
}
if("システム終了".equals(actions)){
System.exit(0);
}
}
/**システムトレイアイコンの処理*/
private void systemTray(){
if(SystemTray.isSupported()){ //システムがトレイ機能をサポートしているかどうかを判断します。
URL resource = this.getClass().getResource("systray.jpg"); //画像パスを取得します。
ImageIcon icon = new ImageIcon(resource); //画像オブジェクトを作成します。
PopupMenu PopupMenu = new PopupMenu() // ポップアップ メニュー オブジェクトを作成します。
MenuItem itemExit = new MenuItem("システムを終了") //ポップアップ メニューに終了項目を作成します。
MenuItem itemShow = new MenuItem("表示フォーム"); //ポップアップ メニューに表示メイン フォーム項目を作成します。
itemExit.addActionListener(new ActionListener() { //終了イメージにイベント リスナーを追加します
@オーバーライド
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
itemShow.addActionListener(new ActionListener() { //フォームを最小化するイベント リスナーを追加します。
@オーバーライド
public void actionPerformed(ActionEvent e) {
setVisible(true);
}
});
PopupMenu.add(itemExit);
PopupMenu.add(itemShow);
TrayIcon TrayIcon = new TrayIcon(icon.getImage(),"電話帳システム",popupMenu);
SystemTray sysTray = SystemTray.getSystemTray();
試す {
sysTray.add(trayIcon);
キャッチ (AWTException e1) { }
}
}
/**
※主な方法
* @param 引数
*/
public static void main(String[] args) {
new MainFrame().setVisible(true);
}
}