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

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

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

    隨筆 - 154  文章 - 60  trackbacks - 0
    <2007年11月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    聲明:

    該blog是為了收集資料,認識朋友,學習、提高技術,所以本blog的內容除非聲明,否則一律為轉載!!

    感謝那些公開自己技術成果的高人們!!!

    支持開源,尊重他人的勞動!!

    常用鏈接

    留言簿(3)

    隨筆分類(148)

    隨筆檔案(143)

    收藏夾(2)

    其他

    學習(技術)

    觀察思考(非技術)

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    在讀取大型文件或者其它大批量數據輸入操作時,希望能夠通過一個進度條顯示當前的進度,現在在Java中非常容易實現,僅僅需要幾行代碼即可。Java的swing包提供了ProgressMonitorInputStream類,該類提供了自動地彈出進度窗口和事件處理機制。

    使用這個類也非常方便,只需要把任何一個InputStream作為參數,構造一個新的ProgressMonitorInputStream類,其它不需要任何額外的代碼,即可實現進度窗口的自動生成。ProgressMonitorInputStream類可以和其它InputStream一樣使用。

    ProgressMonitorInputStream類繼承層次

    [pre]java.lang.Object
                |
                +--java.io.InputStream
                |
                +--java.io.FilterInputStream
                |
                +--javax.swing.ProgressMonitorInputStream[/pre]

    構造方法

    ProgressMonitorInputStream
                (Component parentComponent,
                Object message, InputStream in)
                parentComponent - 觸發被監視操作的組件
                message - (如果彈出進度顯示窗口),
                顯示在進度顯示窗口中的指示信息
                in - 需要監視的輸入流

    操作方法

    除了在InputStream和FilterInputStream中繼承的方法外,還增加了如下方法:

    ProgressMonitor getProgressMonitor()
                //得到當前對象使用的ProgressMonitor對象。
                int read()
                int read(byte[] b)
                int read(byte[] b, int off, int len)
                void reset()
                long skip(long n)
                //上面幾個方法都是覆蓋了FilterInputStream中的方法,
                因為需要更新進度指示。
                void close()
                //因為需要關閉進度監視對象和窗口,
                所以覆蓋了FilterInputStream父類中的close方法。


    示例代碼:

    import java.awt.FlowLayout; 
    import java.awt.event.ActionEvent; 
    import java.awt.event.ActionListener; 
    import java.io.FileInputStream; 
    import java.io.InputStream; 

    import javax.swing.JButton; 
    import javax.swing.JFrame; 
    import javax.swing.ProgressMonitorInputStream; 

    public class ProgressMonitorTest 

      
    public static void main(String[] args) 
      

        
    // 創建一個包含“Click me”的窗口 
        final JFrame f =
        
    new JFrame("ProgressMonitor Sample"); 
        f.getContentPane().setLayout(
    new FlowLayout()); 
        JButton b 
    = new JButton("Click me"); 
        f.getContentPane().add(b); 
        f.pack(); 

        
    // 設置按鈕的動作事件 
        b.addActionListener(new ActionListener()
        

          
    public void actionPerformed(ActionEvent e)
          

            
    // 這兒使用了新的線程處理按鈕的動作事件,
            因為我們需要 
            
    //主窗口的線程響應用戶。這樣你可以多次點擊該按鈕, 
            
    //會啟動多個讀取文件的線程。主窗口也保持響應。 
            new Thread() 
            

              
    public void run()
              

                
    try 
                  
    // 打開文件輸出流,
                  
                  把InputStream包裝在ProgressMonitorInputStream中。 
                  
    //在當前目錄中需要放置一個大文件,建議超過50M 
                  InputStream in = new FileInputStream("bigfile.dat");  
                  ProgressMonitorInputStream pm 
    =  
                   
    new ProgressMonitorInputStream(f,"Reading a big file",in); 
                  
    // 讀取文件,如果總耗時超過2秒,
                  將會自動彈出一個進度監視窗口。 
                  
    //   顯示已讀取的百分比。 
                  int c; 
                  
    while((c=pm.read()) != -1
                  

                    
    // 處理代碼 
                  }
     
                  pm.close();  
                }
     
                
    catch(Exception ex) 
                

                  ex.printStackTrace(); 
                }
     
              }
     
            }
    .start(); 
          }
    }
    );   
       
        
    // 設置缺省的窗口關閉行為,并顯示窗口。 
        f.setDefaultCloseOperation
        (JFrame.EXIT_ON_CLOSE); 
        f.setVisible(
    true); 
      }
     
    }
    posted on 2007-11-01 13:44 lk 閱讀(2461) 評論(0)  編輯  收藏 所屬分類: j2se
    主站蜘蛛池模板: 精品国产免费人成电影在线观看| 国产高清视频免费在线观看| 免费精品无码AV片在线观看| 国精无码欧精品亚洲一区| 人碰人碰人成人免费视频| 亚洲成综合人影院在院播放| 大地资源网高清在线观看免费| 国产自偷亚洲精品页65页| 插鸡网站在线播放免费观看| 在线观看av永久免费| 亚洲jizzjizz在线播放久| 毛片高清视频在线看免费观看| 香蕉大伊亚洲人在线观看| 国产小视频在线免费| 一级美国片免费看| 免费看美女被靠到爽的视频| 亚洲色大成网站WWW国产| 国产精品免费综合一区视频| 五月婷婷免费视频| 亚洲妇熟XXXX妇色黄| 曰批视频免费40分钟试看天天| 亚洲乱码一区av春药高潮| 国产成人青青热久免费精品| 天堂亚洲免费视频| 亚洲AV日韩精品久久久久久| 好先生在线观看免费播放| 免费无码午夜福利片69| 亚洲精品无码不卡在线播放HE| 91青青国产在线观看免费| 亚洲中文字幕无码av永久| 亚洲视频在线一区二区| 久久久久高潮毛片免费全部播放 | 国产在线观看免费视频软件| 少妇中文字幕乱码亚洲影视| 成人免费无码大片a毛片| jizz在线免费播放| 亚洲一区二区三区高清视频| 亚洲精品高清一二区久久| 亚洲一区二区三区免费在线观看 | 午夜国产精品免费观看| 免费激情网站国产高清第一页|