JDK6新特性:最小化至托盘

来源:互联网 发布:手机编曲的软件 编辑:程序博客网 时间:2024/04/27 14:03
 
参考资料:老紫竹的博客:http://blog.csdn.net/java2000_net;JDK6API
 
  1. package toolkit;
  2. import java.awt.AWTException;
  3. import java.awt.Image;
  4. import java.awt.MenuItem;
  5. import java.awt.PopupMenu;
  6. import java.awt.SystemTray;
  7. import java.awt.Toolkit;
  8. import java.awt.TrayIcon;
  9. import java.awt.event.ActionEvent;
  10. import java.awt.event.ActionListener;
  11. import javax.swing.JOptionPane;
  12. /**
  13.  * JDK6新特性:最小化至托盘
  14.  */
  15. public class ToolkitDemo {
  16.     
  17.     Toolkit toolkit;
  18.     
  19.     public static void main(String[] args) {
  20.         // TODO Auto-generated method stub
  21.         ToolkitDemo demo=new ToolkitDemo();
  22.         demo.setMenu();
  23.     }
  24.     
  25.     public void setMenu(){
  26.         //不支持系统托盘的平台,此时会抛出UnsupportedOperationException的异常
  27.         if (!SystemTray.isSupported()) {
  28.             
  29.             JOptionPane.showMessageDialog(null"不支持系统托盘");
  30.             
  31.         }else{
  32.             
  33.             SystemTray tray = SystemTray.getSystemTray();//获取表示桌面托盘区的 SystemTray 实例
  34.             toolkit = Toolkit.getDefaultToolkit();//获取默认工具包
  35.             
  36.             Image image = toolkit.getImage("src/images/046.gif");
  37.             
  38.             PopupMenu menu = new PopupMenu();//此类实现能够在组件中的指定位置上动态弹出的菜单
  39.         
  40.             MenuItem closemenu = new MenuItem("退出");
  41.                         
  42.             this.closeActionPerformed(closemenu);
  43.             menu.add(closemenu);
  44.             
  45.             /**
  46.              * 表示可以添加到系统托盘的托盘图标。
  47.              * TrayIcon 可以包含工具提示(文本)、图像、弹出菜单和一组与之关联的侦听器
  48.              * **/
  49.             TrayIcon icon = new TrayIcon(image, "系统托盘", menu);
  50.             icon.setImageAutoSize(true);//设置自动调整大小的属性
  51.             try {
  52.                 tray.add(icon);
  53.             } catch (AWTException e1) {
  54.                 // TODO Auto-generated catch block
  55.                 e1.printStackTrace();
  56.             }
  57.         }
  58.         
  59.     }
  60.     
  61.     /**
  62.      * 关闭托盘时触发事件
  63.      * **/
  64.     private void closeActionPerformed(MenuItem menu){
  65.         menu.addActionListener(new ActionListener() {
  66.           public void actionPerformed(ActionEvent e) {
  67.               
  68.               int isExit=JOptionPane.showConfirmDialog(null"您真的要退出吗?","退出询问",JOptionPane.YES_NO_OPTION);
  69.               if(isExit==JOptionPane.YES_OPTION){
  70.                   
  71.                   toolkit.beep();// 发出一个音频嘟嘟声
  72.                   
  73.                   System.exit(0);
  74.               }
  75.           }
  76.         });
  77.     }
  78. }
原创粉丝点击