[原创]一个读文件的进度条
/**
* @(#) 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);
}
}
本文地址:http://com.8s8s.com/it/it15771.htm