swing-将程序推至系统托盘
1.关闭弹框系统不退出,而是隐藏到系统托盘
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
toSysTray();
}
});
- 退至系统托盘
private static void toSysTray() {
if (java.awt.SystemTray.isSupported()){
System.out.println("support....");
}
frame.setVisible(false);
ImageIcon trayImg = new ImageIcon("src/main/resources/static/jd.gif");//托盘图标
PopupMenu pop = new PopupMenu();//增加托盘右击菜单
MenuItem show = new MenuItem("show");
show.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
tray.remove(trayIcon);
frame.setVisible(true);
frame.setExtendedState(JFrame.NORMAL);
frame.toFront();
}
});
MenuItem exit = new MenuItem("exit");
exit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
tray.remove(trayIcon);
System.exit(0);
}
});
pop.add(show);
pop.add(exit);
trayIcon = new TrayIcon(trayImg.getImage(), "jdsys", pop);
trayIcon.setImageAutoSize(true);
trayIcon.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2){
tray.remove(trayIcon); // 移去托盘图标
frame.setVisible(true);
frame.setExtendedState(JFrame.NORMAL); // 还原窗口
frame.toFront();
}
}
});
try {
tray.add(trayIcon);
} catch (AWTException e) {
e.printStackTrace();
}
}