[原创]一个读文件的进度条
  
/**  * @(#) TestProgressBar.java  *  * Copyright 2004 Opensource Develop Team. All rights reserved.  */
  // package package com.opensource.progressbar;
  // import classes 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;
  /**  * 当读取一个大文件的时候,需要显示一个进度条提示用户还有多少要读取和已经  * 读取了多少内容。  *  * @author ODT  * @version 1.0 01/05/2004  * @since JDK 1.3  */
 
  public class TestProgressBar  {      public static void main(String[] args)       {            // 创建一个有button的frame            final JFrame f = new JFrame("Sample");            f.getContentPane().setLayout(new FlowLayout());            JButton b = new JButton("Press me");            f.getContentPane().add(b);            f.pack();
             // set up the file read action            b.addActionListener(new ActionListener()             {                  public void actionPerformed(ActionEvent e)                   {                        // 当button按下的时候开始一个线程去读取文件。                        // 因为我们需要一个空闲的线程去更新绘制progress monitor                        new Thread()                         {                              public void run()                               {                                    try                                     {                                          // 打开一个文件,封装进ProgressMonitorInputStream                                          InputStream in = new FileInputStream("D:\\Java projects\\mail.txt");                                          ProgressMonitorInputStream pm =                                                 new ProgressMonitorInputStream(f,"Reading the big file",in);                                          // 读文件。如果需要很长时间,progress monitor将出现。                                          int c;                                          while((c=pm.read()) != -1)                                           {                                                // do something                                          }                                          pm.close(); // 可以改写一个更好的错误处理                                    }                                    catch(Exception ex)                                     {                                          ex.printStackTrace();                                    }                              }                        }.start();                  }            });                 // 显示frame            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);            f.setVisible(true);      } }
   
 
  |