<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

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

          桌面的系統托盤即當程序最小化或者關閉按鈕程序并沒有退出,而是最小化在任務狀態區域(Windows系統),當鼠標點擊那個區域所在的圖標有提示以及其他的操作。在 Microsoft Windows 上,它被稱為“任務欄狀態區域 (Taskbar Status Area)”,在 Gnome 上,它被稱為“通知區域 (Notification Area)”,在 KDE 上,它被成為“系統托盤 (System Tray)”。系統托盤由運行在桌面上的所有應用程序共享。

           jdk1.6 中新增了兩個類來實現:SystemTray 和 TrayIcon,以下為詳細介紹:

          SystemTray 類介紹: 

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

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

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

          這是下面代碼當鼠標放在這個“OK”上的提示  
          這是下面代碼當鼠標右鍵點擊“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("系統托盤的例子");
            jbInit();
            
    this.setSize(200250);
            
    this.setLocation(300300);
        }

        
    public void jbInit(){
            
    if(SystemTray.isSupported())//檢查當前系統是否支持系統托盤
                 SystemTray tray = SystemTray.getSystemTray();//獲取表示桌面托盤區的 SystemTray 實例。
                 Image image  = Toolkit.getDefaultToolkit().getImage("D:\\kissjava.gif");
                 PopupMenu popupMenu 
    = new PopupMenu(); 
                 MenuItem  exitItem  
    = new MenuItem("關閉"); 
                 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, "系統托盤{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(
    "你的系統不支持系統托盤");
            }

            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 閱讀(5649) 評論(15)  編輯  收藏 所屬分類: swing

    評論

    # re: java實現系統托盤 2008-07-30 12:18 枯寬
    深圳的swing好難找工作、、、、  回復  更多評論
      

    # re: java實現系統托盤 2008-07-30 15:11 隔葉黃鶯
    沒辦法啊,都說是互聯網的冬天了。

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

    # re: java實現系統托盤 2008-07-30 15:44 鬼狗
    有個東西叫jdic, 1.6的東西也都是從這個項目發展來。
    用jdic可以很容易實現系統托盤,內嵌瀏覽器等功能, 不需要非1.6不可。  回復  更多評論
      

    # re: java實現系統托盤 2008-07-30 15:49 枯寬
    @隔葉黃鶯
    嗯,那樣挺好的。省不少空間。。  回復  更多評論
      

    # re: java實現系統托盤 2008-07-30 15:54 馨雨
    偶雖然看不懂
    但是支持一下吧!
    嘻嘻  回復  更多評論
      

    # re: java實現系統托盤 2008-07-30 15:55 馨雨
    加油~!^_^  回復  更多評論
      

    # re: java實現系統托盤 2008-07-30 16:14 枯寬
    呵呵。。沒找到Unmi說的那個方法。回去再找。。把手頭的忙完先  回復  更多評論
      

    # re: java實現系統托盤 2008-07-31 10:59 iLinux
    偶然得之物,
    鼓勵!  回復  更多評論
      

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

    # re: java實現系統托盤 2008-08-02 18:46 XX
    恩。。好東西。。收藏了  回復  更多評論
      

    # re: java實現系統托盤 2008-08-05 17:20 zarro
    阿亮 ,非技術流來灌水了,呵呵!
    技術討論還是不要太水了,好吧,我會學會做
    一個好菜, 有機會犒勞一下各位弟兄。  回復  更多評論
      

    # re: java實現系統托盤 2008-08-05 23:03 枯寬
    @zarro
    好啊。努力做一個有品味的男人。哈。現在沒工作,明天我也開始學做菜  回復  更多評論
      

    # re: java實現系統托盤 2008-09-23 21:02 Lea
    good!  回復  更多評論
      

    # re: java實現系統托盤 2009-11-06 11:22 ljtat
    謝謝,收獲!  回復  更多評論
      

    # re: java實現系統托盤 2010-03-26 21:55 蒼狼
    收藏了,謝謝  回復  更多評論
      

    主站蜘蛛池模板: 无码少妇一区二区浪潮免费| 未满十八18禁止免费无码网站 | 久久精品亚洲精品国产色婷 | 国产精品久久久久久亚洲小说| 成年人免费观看视频网站| 亚洲激情校园春色| 曰批视频免费40分钟试看天天 | 国产成人免费A在线视频| 亚洲熟伦熟女专区hd高清| 最近2019中文免费字幕| 久久水蜜桃亚洲AV无码精品| 日韩在线免费播放| 边摸边吃奶边做爽免费视频网站| 日本不卡免费新一二三区| 日韩在线视频播放免费视频完整版| 免费大黄网站在线看| 国产精品无码免费专区午夜 | 国产在线观看免费av站| 亚洲va久久久噜噜噜久久| 精品成人免费自拍视频| 中文字幕亚洲色图| 最新免费jlzzjlzz在线播放| 国产精品亚洲专区无码不卡| 亚洲一区二区三区自拍公司| 一级毛片免费观看不卡视频| 亚洲宅男精品一区在线观看| 国产gav成人免费播放视频| 久久嫩草影院免费看夜色| 亚洲黄色免费观看| 成全高清视频免费观看| 一级午夜a毛片免费视频| 日本亚洲欧洲免费天堂午夜看片女人员| 久久午夜无码免费| 亚洲AV香蕉一区区二区三区| 超清首页国产亚洲丝袜| 免费无码一区二区三区| 亚洲日本一线产区和二线 | 亚洲欧洲日产国码高潮αv| 四虎成人精品永久免费AV| 亚洲精品无码成人片久久不卡 | a毛看片免费观看视频|