Java實現系統欄托盤


桌面的系統托盤即當程序最小化時並沒有退出,而是最小化在任務狀態區域。當鼠標點擊那個區域所在的圖標會有提示以及彈出菜單等。

下面使用Java中的SystemTray和TrayIcon類實現系統欄托盤:

public class CPSystemTray {
    JFrame parent;//主窗口

    CPSystemTray(){
        this.parent = null;
    }

    CPSystemTray(JFrame parent){
        this.parent = parent;
    }

    public void systemTrayInit(){
        // 判斷當前系統是否支持系統欄圖標
        if (!SystemTray.isSupported()) {
            return;
        }
        try {
            String title = "ControlParamApp";
            String author = "CS.FJC";
            SystemTray sysTray = SystemTray.getSystemTray();
            Image image = Toolkit.getDefaultToolkit().getImage(
                    CPSystemTray.class.getResource("../icons/sysTray.png"));
            // 設置系統欄圖標及彈出菜單
            TrayIcon trayIcon = new TrayIcon(image, title + "\n" + author, createSysTrayMenu());
            trayIcon.setImageAutoSize(true);
            trayIcon.addActionListener(new SysTrayActionListener());
            sysTray.add(trayIcon);
            trayIcon.displayMessage(title, author, MessageType.INFO);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private PopupMenu createSysTrayMenu() {
        PopupMenu sysTrayMenu = new PopupMenu();
	MenuItem exitItem = new MenuItem("Exit");
	exitItem.addActionListener(new ActionListener() { 
		public void actionPerformed(ActionEvent e) {
                    System.exit(0);
                }
	});
	MenuItem openItem = new MenuItem("Open");
        openItem.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {

		}
	});

	sysTrayMenu.add(openItem);
	sysTrayMenu.addSeparator();
	sysTrayMenu.add(exitItem);
	return sysTrayMenu;
    }

    class SysTrayActionListener implements ActionListener {
        //系統欄圖標雙擊事件
        public void actionPerformed(ActionEvent e) {
            if(parent!=null){
                parent.setVisible(true);
                parent.toFront();
            }
	}
    }
}

效果:

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章