有才華的人,別忘記給滋潤你的那塊土壤施肥

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            28 隨筆 :: 5 文章 :: 147 評論 :: 0 Trackbacks
                明天就要離開我的第一家公司,打算先去廈門玩幾天再回深圳踏去尋找新東家的漫長道路。呵,開始說正事,今天看API無意中發(fā)現(xiàn)了一個(gè)jdk1.6新增的SystemTray類,才想起:是哦,java怎么實(shí)現(xiàn)系統(tǒng)托盤呢?

                桌面的系統(tǒng)托盤即當(dāng)程序最小化或者關(guān)閉按鈕程序并沒有退出,而是最小化在任務(wù)狀態(tài)區(qū)域(Windows系統(tǒng)),當(dāng)鼠標(biāo)點(diǎn)擊那個(gè)區(qū)域所在的圖標(biāo)有提示以及其他的操作。在 Microsoft Windows 上,它被稱為“任務(wù)欄狀態(tài)區(qū)域 (Taskbar Status Area)”,在 Gnome 上,它被稱為“通知區(qū)域 (Notification Area)”,在 KDE 上,它被成為“系統(tǒng)托盤 (System Tray)”。系統(tǒng)托盤由運(yùn)行在桌面上的所有應(yīng)用程序共享。

                 jdk1.6 中新增了兩個(gè)類來實(shí)現(xiàn):SystemTray 和 TrayIcon,以下為詳細(xì)介紹:

                SystemTray 類介紹: 

                 在某些平臺上,可能不存在或不支持系統(tǒng)托盤,所以要首先使用SystemTray.isSupported()來檢查當(dāng)前的系統(tǒng)是否支持系統(tǒng)托盤

              SystemTray 可以包含一個(gè)或多個(gè) TrayIcon,可以使用 add(java.awt.TrayIcon) 方法將它們添加到托盤,當(dāng)不再需要托盤時(shí),使用 remove(java.awt.TrayIcon) 移除它。TrayIcon 由圖像、彈出菜單和一組相關(guān)偵聽器組成。

                  每個(gè) Java 應(yīng)用程序都有一個(gè) SystemTray 實(shí)例,在應(yīng)用程序運(yùn)行時(shí),它允許應(yīng)用程序與桌面系統(tǒng)托盤建立連接。SystemTray 實(shí)例可以通過getSystemTray ()方法獲得。應(yīng)用程序不能創(chuàng)建自己的 SystemTray 實(shí)例。
           
                  TrayIcon類介紹:
                  TrayIcon 對象表示可以添加到系統(tǒng)托盤的托盤圖標(biāo)。TrayIcon 可以包含工具提示(文本)、圖像、彈出菜單和一組與之關(guān)聯(lián)的偵聽器。
           
                   TrayIcon 可以生成各種 MouseEvent,并支持添加相應(yīng)的偵聽器,以接收這些事件的通知。TrayIcon 可以自己處理一些事件。例如,默認(rèn)情況下,在 TrayIcon 上單擊鼠標(biāo)右鍵時(shí),它將顯示指定的彈出菜單。當(dāng)鼠標(biāo)懸停到 TrayIcon 上時(shí),它將顯示工具提示。
                如:TrayIcon(Image image, String tooltip, PopupMenu popup)  創(chuàng)建帶指定圖像、工具提示和彈出菜單的 TrayIcon

                這是下面代碼當(dāng)鼠標(biāo)放在這個(gè)“OK”上的提示  
                這是下面代碼當(dāng)鼠標(biāo)右鍵點(diǎn)擊“OK”上的顯示

          測試代碼如下(注:jdk1.6):

           

          import java.awt.AWTException;
          import java.awt.Image;
          import java.awt.MenuItem;
          import java.awt.PopupMenu;
          import java.awt.SystemTray;
          import java.awt.Toolkit;
          import java.awt.TrayIcon;
          import java.awt.event.ActionEvent;
          import java.awt.event.ActionListener;
          import java.awt.event.MouseEvent;
          import java.net.URL;
          import javax.swing.ImageIcon;
          import javax.swing.JFrame;
          import javax.swing.JLabel;
          public class SystemTrayDemo extends JFrame{
              
          private TrayIcon trayIcon = null;   
              
          public SystemTrayDemo(){
                  
          this.setTitle("系統(tǒng)托盤的例子");
                  jbInit();
                  
          this.setSize(200250);
                  
          this.setLocation(300300);
              }

              
          public void jbInit(){
                  
          if(SystemTray.isSupported())//檢查當(dāng)前系統(tǒng)是否支持系統(tǒng)托盤
                       SystemTray tray = SystemTray.getSystemTray();//獲取表示桌面托盤區(qū)的 SystemTray 實(shí)例。
                       Image image  = Toolkit.getDefaultToolkit().getImage("D:\\kissjava.gif");
                       PopupMenu popupMenu 
          = new PopupMenu(); 
                       MenuItem  exitItem  
          = new MenuItem("關(guān)閉"); 
                       MenuItem  menuItema  
          = new MenuItem("menu a"); 
                       MenuItem  menuItemb 
          = new MenuItem("menu b"); 
                       MenuItem  menuItemc  
          = new MenuItem("menu c"); 
                       MenuItem  menuItemd 
          = new MenuItem("menu d"); 
                       exitItem.addActionListener(
          new  ActionListener(){
                           
          public void actionPerformed(ActionEvent e)     {   
                               
          try{     
                                    System.exit(
          0);     
                                 }
          catch(Exception   ex)   {   
                                     ex.printStackTrace();   
                                 }
             
                           }

                       }
          );      
                       popupMenu.add(menuItema); 
                       popupMenu.add(menuItemb); 
                       popupMenu.add(menuItemc); 
                       popupMenu.add(menuItemd); 
                       popupMenu.add(exitItem);  
                       trayIcon 
          = new TrayIcon(image, "系統(tǒng)托盤{kissjava}",  popupMenu);   
                       trayIcon.addMouseListener(
          new java.awt.event.MouseAdapter(){
                          @Override
                          
          public void mouseClicked(MouseEvent e) {
                             
          if(e.getClickCount()==2){   
                                 showIT(
          true);   
                              }

                          }
               
                       }
          );
                       
          try{   
                            tray.add(trayIcon);  
          // 將 TrayIcon 添加到 SystemTray。 
                       }
           catch   (AWTException   e)     {   
                            System.err.println(e);   
                       }

                  }
          else{
                      System.out.println(
          "你的系統(tǒng)不支持系統(tǒng)托盤");
                  }

                  ImageIcon icon 
          = new ImageIcon();
                  
          try{
                      URL url 
          = new URL("http://img1.qq.com/ent/pics/11436/11436218.jpg");
                      icon 
          = new ImageIcon(url);
                  }
          catch(Exception e){
                      
                  }
              
                  JLabel label 
          = new JLabel();
                  label.setIcon(icon);
                  
          this.add(label);
              }

              
          public void showIT(boolean visable){
                  
          if(this.isVisible() != visable)
                      
          this.setVisible(visable);
              }

              
          public static void main(String[] args) {
                  javax.swing.SwingUtilities.invokeLater(
          new Runnable(){
                      
          public void run(){
                          
          new SystemTrayDemo().setVisible(true);
                      }

                  }
          );
              }

          }

          posted on 2008-07-30 11:49 kissjava 閱讀(5652) 評論(15)  編輯  收藏 所屬分類: swing

          評論

          # re: java實(shí)現(xiàn)系統(tǒng)托盤 2008-07-30 12:18 枯寬
          深圳的swing好難找工作、、、、  回復(fù)  更多評論
            

          # re: java實(shí)現(xiàn)系統(tǒng)托盤 2008-07-30 15:11 隔葉黃鶯
          沒辦法啊,都說是互聯(lián)網(wǎng)的冬天了。

          你可以用我那種在博客中編排代碼的樣式。  回復(fù)  更多評論
            

          # re: java實(shí)現(xiàn)系統(tǒng)托盤 2008-07-30 15:44 鬼狗
          有個(gè)東西叫jdic, 1.6的東西也都是從這個(gè)項(xiàng)目發(fā)展來。
          用jdic可以很容易實(shí)現(xiàn)系統(tǒng)托盤,內(nèi)嵌瀏覽器等功能, 不需要非1.6不可。  回復(fù)  更多評論
            

          # re: java實(shí)現(xiàn)系統(tǒng)托盤 2008-07-30 15:49 枯寬
          @隔葉黃鶯
          嗯,那樣挺好的。省不少空間。。  回復(fù)  更多評論
            

          # re: java實(shí)現(xiàn)系統(tǒng)托盤 2008-07-30 15:54 馨雨
          偶雖然看不懂
          但是支持一下吧!
          嘻嘻  回復(fù)  更多評論
            

          # re: java實(shí)現(xiàn)系統(tǒng)托盤 2008-07-30 15:55 馨雨
          加油~!^_^  回復(fù)  更多評論
            

          # re: java實(shí)現(xiàn)系統(tǒng)托盤 2008-07-30 16:14 枯寬
          呵呵。。沒找到Unmi說的那個(gè)方法。回去再找。。把手頭的忙完先  回復(fù)  更多評論
            

          # re: java實(shí)現(xiàn)系統(tǒng)托盤 2008-07-31 10:59 iLinux
          偶然得之物,
          鼓勵(lì)!  回復(fù)  更多評論
            

          # re: java實(shí)現(xiàn)系統(tǒng)托盤 2008-07-31 13:22 殘夢追月
          問題是blogjava上的插入代碼功能做不出你博客上那樣的樣式嘛!  回復(fù)  更多評論
            

          # re: java實(shí)現(xiàn)系統(tǒng)托盤 2008-08-02 18:46 XX
          恩。。好東西。。收藏了  回復(fù)  更多評論
            

          # re: java實(shí)現(xiàn)系統(tǒng)托盤 2008-08-05 17:20 zarro
          阿亮 ,非技術(shù)流來灌水了,呵呵!
          技術(shù)討論還是不要太水了,好吧,我會學(xué)會做
          一個(gè)好菜, 有機(jī)會犒勞一下各位弟兄。  回復(fù)  更多評論
            

          # re: java實(shí)現(xiàn)系統(tǒng)托盤 2008-08-05 23:03 枯寬
          @zarro
          好啊。努力做一個(gè)有品味的男人。哈?,F(xiàn)在沒工作,明天我也開始學(xué)做菜  回復(fù)  更多評論
            

          # re: java實(shí)現(xiàn)系統(tǒng)托盤 2008-09-23 21:02 Lea
          good!  回復(fù)  更多評論
            

          # re: java實(shí)現(xiàn)系統(tǒng)托盤 2009-11-06 11:22 ljtat
          謝謝,收獲!  回復(fù)  更多評論
            

          # re: java實(shí)現(xiàn)系統(tǒng)托盤 2010-03-26 21:55 蒼狼
          收藏了,謝謝  回復(fù)  更多評論
            

          主站蜘蛛池模板: 乐陵市| 肇东市| 白山市| 酒泉市| 若羌县| 金秀| 榆社县| 鄂尔多斯市| 波密县| 晋宁县| 紫云| 浦北县| 玉田县| 贡觉县| 新邵县| 鹤壁市| 固安县| 临沭县| 肇东市| 株洲市| 康保县| 麻城市| 侯马市| 双城市| 宣汉县| 邮箱| 舒城县| 桂东县| 罗江县| 新余市| 上虞市| 建宁县| 东阳市| 灵石县| 深泽县| 专栏| 河源市| 金乡县| 滁州市| 涞水县| 吴川市|