免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1977 | 回复: 0

Java1.6.0实现GUI系统托盘技术演示代码(附详细注释) [复制链接]

论坛徽章:
0
发表于 2011-02-09 14:03 |显示全部楼层
  1. import java.awt.AWTException;
  2. import java.awt.MenuItem;
  3. import java.awt.PopupMenu;
  4. import java.awt.SystemTray;
  5. import java.awt.TrayIcon;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8. import java.awt.event.MouseAdapter;
  9. import java.awt.event.MouseEvent;
  10. import javax.swing.ImageIcon;
  11. import javax.swing.JButton;
  12. import javax.swing.JFrame;
  13. import javax.swing.JLabel;
  14. import javax.swing.JOptionPane;
  15. import javax.swing.JPanel;
  16. import javax.swing.UIManager;
  17. import javax.swing.UnsupportedLookAndFeelException;
  18. /**
  19. * Java1.6.0实现系统托盘技术演示
  20. *
  21. * @author 五斗米 <如转载请保留作者和出处>
  22. * @blog http://blog.csdn.net/mq612
  23. */
  24. public class TrayDemo extends JFrame {
  25.     private JPanel pane = null;
  26.     private JButton button = null; // 启动托盘图标的按钮
  27.     private JLabel label = null; // 用来显示系统是否支持托盘的信息
  28.     private TrayIcon trayIcon = null; // 托盘图标
  29.     private SystemTray tray = null; // 本操作系统托盘的实例
  30.    
  31.     public TrayDemo() {
  32.         super("Java1.6.0托盘技术演示");
  33.         try {
  34.             // 将LookAndFeel设置成Windows样式
  35.             UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
  36.         } catch (Exception ex) {
  37.             ex.printStackTrace();
  38.         }
  39.         pane = new JPanel();
  40.         button = new JButton("缩小到托盘");
  41.         button.setEnabled(false);
  42.         label = new JLabel("本操作系统不支持托盘");
  43.         pane.add(label);
  44.         pane.add(button);
  45.         if(SystemTray.isSupported()){ // 如果操作系统支持托盘
  46.             this.tray();
  47.         }
  48.         this.getContentPane().add(pane);
  49.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  50.         this.setSize(300, 200);
  51.         this.setVisible(true);
  52.     }
  53.     /**
  54.      * 托盘相关代码
  55.      */
  56.     private void tray(){
  57.         label.setText("本操作系统支持托盘");
  58.         button.setEnabled(true);
  59.         tray = SystemTray.getSystemTray(); // 获得本操作系统托盘的实例
  60.         ImageIcon icon = new ImageIcon("images/icon.gif"); // 将要显示到托盘中的图标
  61.         PopupMenu pop = new PopupMenu(); // 构造一个右键弹出式菜单
  62.         MenuItem show = new MenuItem("显示窗口");
  63.         MenuItem exit = new MenuItem("退出演示");
  64.         MenuItem author = new MenuItem("Author");
  65.         /**
  66.          * TrayIcon有三个构造
  67.          * TrayIcon(Image image) 用“图标”来构造
  68.          * TrayIcon(Image image, String tooltip) 用“图标”和“ToolTip”构造
  69.          * TrayIcon(Image image, String tooltip, PopupMenu popup) 用“图标”,“ToolTip”,“弹出菜单”来构造一个托盘图标
  70.          */
  71.         trayIcon = new TrayIcon(icon.getImage(), "Java1.6.0托盘技术演示", pop);
  72.         // 点击本按钮后窗口被关闭,托盘图标被添加到系统的托盘中
  73.         button.addActionListener(new ActionListener() {
  74.             public void actionPerformed(ActionEvent e) {
  75.                 try {
  76.                     tray.add(trayIcon); // 将托盘图标添加到系统的托盘实例中
  77.                     setVisible(false); // 使窗口不可视
  78.                 } catch (AWTException ex) {
  79.                     ex.printStackTrace();
  80.                 }
  81.             }
  82.         });
  83.         /**
  84.          * 添加鼠标监听器,当鼠标在托盘图标上双击时,默认显示窗口
  85.          */
  86.         trayIcon.addMouseListener(new MouseAdapter() {
  87.             public void mouseClicked(MouseEvent e) {
  88.                 if(e.getClickCount()==2){ // 鼠标双击
  89.                     tray.remove(trayIcon); // 从系统的托盘实例中移除托盘图标
  90.                     setVisible(true); // 显示窗口
  91.                 }
  92.             }
  93.         });
  94.         show.addActionListener(new ActionListener() { // 点击“显示窗口”菜单后将窗口显示出来
  95.             public void actionPerformed(ActionEvent e) {
  96.                 tray.remove(trayIcon); // 从系统的托盘实例中移除托盘图标
  97.                 setVisible(true); // 显示窗口
  98.             }
  99.         });
  100.         exit.addActionListener(new ActionListener() { // 点击“退出演示”菜单后退出程序
  101.             public void actionPerformed(ActionEvent e) {
  102.                 System.exit(0); // 退出程序
  103.             }
  104.         });
  105.         author.addActionListener(new ActionListener() {
  106.             public void actionPerformed(ActionEvent e) {
  107.                 showMessage();
  108.             }
  109.         });
  110.         pop.add(show);
  111.         pop.add(exit);
  112.         pop.add(author);
  113.     }
  114.     /**
  115.      * 显示信息
  116.      */
  117.     private void showMessage(){
  118.         JOptionPane.showMessageDialog(this,
  119.                 new JLabel("<html>作者:mq612(五斗米)<br>Blog:http://blog.csdn.net/mq612</html>"),
  120.                        "五斗米", JOptionPane.INFORMATION_MESSAGE);
  121.     }
  122.    
  123.     public static void main(String[] args) {
  124.         new TrayDemo();
  125.     }
  126.    
  127. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP