Java Swing控件桌面程序 显示托盘图标

给Swing程序添加系统图标需要用到两个主要的类:SystemTrayTrayIcon

  • SystemTray 通常用于判断系统是否支持托盘图标和添加系统图标功能;
  • TrayIcon 用来创建一个图标,然后需要使用SystemTray将add进去;在图标上可以添加PopupMenu和MenuItem,构成功能菜
  • package s;
    import java.awt.AWTException;
    import java.awt.MenuItem;
    import java.awt.PopupMenu;
    import java.awt.SystemTray;
    import java.awt.Toolkit;
    import java.awt.TrayIcon;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.time.Clock;
    public class a {
    	public static void main(String[] args) {
    		if(SystemTray.isSupported()){//判断系统是否托盘
    			//创建一个托盘图标对象
    			TrayIcon icon = 
    			new TrayIcon(Toolkit.getDefaultToolkit().getImage(Clock.class.getResource("/images/21.png")));
    
    			//创建弹出菜单
    			PopupMenu menu = new PopupMenu();
    			//添加一个用于退出的按钮
    			MenuItem item = new MenuItem("退出");
    			item.addActionListener(new ActionListener() {
    				public void actionPerformed(ActionEvent e) {
    					System.exit(0);
    				}
    			});
    			menu.add(item);
    			//添加弹出菜单到托盘图标
    			icon.setPopupMenu(menu);
    			SystemTray tray = SystemTray.getSystemTray();//获取系统托盘
    			try {
    				tray.add(icon);
    			} catch (AWTException e1) {
    				// TODO Auto-generated catch block
    				e1.printStackTrace();
    			}//将托盘图表添加到系统托盘
    		}
    	}
    } 

    注意:
    1、TrayIcon icon = new TrayIcon(Toolkit.getDefaultToolkit().getImage(Clock.class.getResource("/images/21.png")));
    这句话,是用来创建一个icon,还可以加参数,比如 
  •  trayIcon = new TrayIcon(Toolkit.getDefaultToolkit().getImage(Clock.class.getResource("/images/21.png")), "seara", popup);// 创建trayIcon
中间的参数是显示托盘名称的。
2、这里的图片路径非常容易出错。注意操作步骤,要现在项目里新建一个resources文件夹,然后使用buildpath将这个文件加入到resouce;在resources文件夹下,建立images文件夹,将图片文件放入其中。

你可能感兴趣的:(Java)