实现的功能:点击最小化,窗口最小化到托盘,点击托盘中的图标,显示原窗口
效果图:
源代码:
import java.awt.*;
import java.awt.event.*;
import java.net.URL;
import javax.swing.*;
public class Copyapk{
protected static final int NORMAL = 0;
public static void main(String[] args) {
// 创建窗口对象
JFrame jFrame = new JFrame("window");
// 设置窗口大小
jFrame.setSize(500,600);
// 窗口图标
URL imageurl = GUItest.class.getClassLoader().getResource("QQ图片20201222173057.jpg");
Image image = new ImageIcon(imageurl).getImage();
// 设置窗口图标
jFrame.setIconImage(image);
// 设置窗口居中显示
jFrame.setLocationRelativeTo(null);
// 设置窗口可见
jFrame.setVisible(true);
// 窗口关闭时退出程序
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 不允许改变窗口大小
jFrame.setResizable(false);
// 设置托盘图标
TrayIcon trayIcon = new TrayIcon(image);
// 创建托盘图标对象
SystemTray systemTray = SystemTray.getSystemTray();
// 设置托盘图标大小自适应
trayIcon.setImageAutoSize(true);
// 窗口监听
jFrame.addWindowListener(new WindowAdapter() {
// 窗口最小化事件
public void windowIconified(WindowEvent e) {
try {
// 窗口最小化时显示托盘图标
systemTray.add(trayIcon);
} catch (AWTException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// 设置窗口不可见
jFrame.setVisible(false);
}
});
// 鼠标监听
trayIcon.addMouseListener(new MouseAdapter() {
// 鼠标点击事件
@Override
public void mouseClicked(MouseEvent e) {
// 鼠标点击次数
int clt = e.getClickCount();
if (clt == 1) {
// 鼠标点击托盘图标一次,恢复原窗口
jFrame.setExtendedState(NORMAL);
}
// 托盘图标消失
systemTray.remove(trayIcon);
// 设置窗口可见
jFrame.setVisible(true);
}
});
}
}