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

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();

}

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

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

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

0818b9ca8b590ca3270a3433284dd417.png

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

0818b9ca8b590ca3270a3433284dd417.png

全文结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值