package Assis; import java.awt.AWTException; import java.awt.Image; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.SystemTray; import java.awt.TrayIcon; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.GroupLayout; import javax.swing.JFrame; import javax.swing.GroupLayout.ParallelGroup; import javax.swing.GroupLayout.SequentialGroup; public class ToTrayIcon extends JFrame implements ActionListener, WindowListener { private static final long serialVersionUID = 1L; // Variables declaration - do not modify private javax.swing.JLabel L_img; private javax.swing.JLabel L_img2; private PopupMenu pop; private MenuItem open, close; private TrayIcon trayicon; // End of variables declaration /** Creates new form MainFrame */ public ToTrayIcon() { setTitle("Java实现系统托盘示例"); setLocation(300, 300); initComponents(); addWindowListener(this); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { // L_img = new javax.swing.JLabel(new // ImageIcon((MainFrame.class).getResource("com/topking/tray/images/netbean1.png"))); // L_img2 = new javax.swing.JLabel(new // ImageIcon((MainFrame.class).getResource("com/topking/tray/images/netbean2.png"))); L_img = new javax.swing.JLabel(); L_img2 = new javax.swing.JLabel(); pop = new PopupMenu(); open = new MenuItem("打开"); open.addActionListener(this); close = new MenuItem("关闭"); close.addActionListener(this); pop.add(open); pop.add(close); if (SystemTray.isSupported()) { SystemTray tray = SystemTray.getSystemTray(); Image icon = getToolkit().getImage( getClass().getResource("/user.png")); trayicon = new TrayIcon(icon, "系统托盘示例(java)", pop); trayicon.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { if (getExtendedState() == JFrame.ICONIFIED) { openFrame();// 还原窗口 } else { // 设置窗口状态(最小化至托盘) setExtendedState(JFrame.ICONIFIED); } } } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } }); try { tray.add(trayicon); } catch (AWTException e) { e.printStackTrace(); } } /** *设置界面布局,可以不用理睬它 */ GroupLayout layout = new GroupLayout(getContentPane()); getContentPane().setLayout(layout); ParallelGroup parg = layout .createParallelGroup(GroupLayout.Alignment.LEADING); SequentialGroup seqg = layout.createSequentialGroup(); ParallelGroup parg2 = layout .createParallelGroup(GroupLayout.Alignment.TRAILING); ParallelGroup parg3 = parg2.addComponent(L_img2, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE); ParallelGroup parg4 = parg3.addComponent(L_img, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE); SequentialGroup seqg2 = seqg.addContainerGap(); SequentialGroup seqg3 = seqg2.addGroup(parg4); SequentialGroup seqg4 = seqg3.addContainerGap(); ParallelGroup parg5 = parg.addGroup(GroupLayout.Alignment.TRAILING, seqg4); layout.setHorizontalGroup(parg5); parg = layout.createParallelGroup(GroupLayout.Alignment.LEADING); layout.setVerticalGroup(parg.addGroup(layout.createSequentialGroup() .addContainerGap().addComponent(L_img).addGap(29, 29, 29) .addComponent(L_img2, GroupLayout.PREFERRED_SIZE, 222, GroupLayout.PREFERRED_SIZE).addContainerGap(39, Short.MAX_VALUE))); pack(); } /** * @param args * the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new ToTrayIcon().setVisible(true); } }); } public void actionPerformed(ActionEvent e) { if (e.getSource() == open) { openFrame(); } if (e.getSource() == close) { System.exit(-1); } } public void openFrame() { setVisible(true);// 设置为可见 setAlwaysOnTop(true);// 设置置顶 // 设置窗口状态(在最小化状态弹出显示) setExtendedState(JFrame.NORMAL); } public void windowActivated(WindowEvent arg0) { } public void windowClosed(WindowEvent arg0) { dispose(); } public void windowClosing(WindowEvent arg0) { } public void windowDeactivated(WindowEvent arg0) { } public void windowDeiconified(WindowEvent arg0) { } // 窗口最小化 public void windowIconified(WindowEvent arg0) { setVisible(false);// 设置为不可见 } public void windowOpened(WindowEvent arg0) { } }
?