您的位置:首页 > 编程语言 > Java开发

Java桌面软件最小化的系统托盘(SystemTray)

2014-10-30 10:25 351 查看
Java编写的Swing或AWT桌面软件如何在关闭或者最小化时可以像QQ一样退出到系统托盘(SystemTray)。这里主要用到的类是java.awt.SystemTray和java.awt.TrayIcon。SystemTray表示系统托盘,通过这个类就可以获取操作系统的系统托盘对象。TrayIcon表示系统托盘的图标。在操作系统托盘前首先需要将系统托盘的图标设置好。

1 设置托盘图标(TrayIcon)

第一,新建托盘图标的图片:

Image image = Toolkit.getDefaultToolkit()
.getImage(this.getClass().getResource("Logo_TrayIcon.png"));


第二,设置图标图标的右击菜单:

PopupMenu popup = new PopupMenu();
MenuItem showItem = new MenuItem("显示");
MenuItem exitItem = new MenuItem("退出");
popup.add(showItem);
popup.add(exitItem);

showItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.setVisible(true);                        //界面可见
frame.setExtendedState(JFrame.MAXIMIZED_BOTH); // 界面全屏
SystemTray.getSystemTray().remove(trayIcon);   //托盘图标删除
}
});
exitItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
systemTryToExit();  //退出软件
}
});


第三,新建托盘图标:

TrayIcon trayIcon = new TrayIcon(image, "这是系统托盘", popup);


第四,设置托盘图标双击事件(双击时打开桌面软件并删除托盘图标):

trayIcon.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent e) {
        if (e.getClickCount() == 2) {// 双击托盘窗口再现
            frame.setVisible(true);                        //界面可见
            frame.setExtendedState(JFrame.MAXIMIZED_BOTH); // 界面全屏
            SystemTray.getSystemTray().remove(trayIcon);   //托盘图标删除
        }

    }
});


这样系统托盘图标就设置好了,可供调用了。

2 设置系统托盘对象

第一,系统托盘类采用的是单例模式。获取系统托盘对象的方式如下:

SystemTray tray = SystemTray.getSystemTray();


第二,最小化软件时向系统托盘添加系统图标

try {
tray.add(this.trayIcon); //trayIcon是上述的系统托盘图标
} catch (AWTException ex) {
ex.printStackTrace();
}


第三,双击托盘中的图标时恢复软件界面并删除托盘图标

(托盘的所有事件操作均在上面在设置系统托盘图标时完成。这里不用写)

如下图所示为软件最小化时的系统托盘:



右击图标发现有右击菜单:



全文结束。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息