import java.awt.AWTException; import java.awt.SystemTray; import java.awt.TrayIcon; import java.awt.event.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.*; /** * An example of minimizing JFrame to the system tray. * @author Jia * */ public class TrayTest extends JFrame implements MouseListener, WindowStateListener{ /** * */ private static final long serialVersionUID = 1L; private TrayTest me; BufferedImage image; private SystemTray systray; private TrayIcon trayIcon; public TrayTest(){ me = this; try { image = ImageIO.read(new File("C:\\Users\\Jia\\Desktop\\icon.jpg")); } catch (IOException e) { JOptionPane.showMessageDialog(null, "problem loading picture"); e.printStackTrace(); } systray = SystemTray.getSystemTray(); trayIcon = new TrayIcon(image, "tray demo"); trayIcon.addMouseListener(this); addWindowStateListener(this); setSize(500,500); setVisible(true); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) throws Exception{ new TrayTest(); } public void mouseClicked(MouseEvent arg0) { me.setVisible(true); me.setState(JFrame.NORMAL); systray.remove(trayIcon); } public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub } public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub } public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub } public void windowStateChanged(WindowEvent arg0) { if (arg0.getNewState() == JFrame.ICONIFIED){ me.setVisible(false); try { systray.add(trayIcon); } catch (AWTException e) { e.printStackTrace(); } } } }