Java带进度条的输入流


Java可以使用带进度条的输入流来读取文件,如果读取文件时希望让用户能够看见文件的读取进度,可以使用javax.swing包提供的输入流类ProgressMonitorInputStream,它的构造方法是:

ProgressMonitorInputStream(Component c, String s, InputStream);

该类创建的输入流在读取文件时会弹出一个显示读取进度的进度条,进度条在参数c指定的组件正前方显示;若该参数取null,则在屏幕的正前方显示。用户可以随时单机进度条上的“取消”按钮关闭流的读取操作。

下面给出一个例子,先看效果图:

Java带进度条的输入流

代码:


import java.awt.BorderLayout;
import java.io.FileInputStream;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ProgressMonitor;
import javax.swing.ProgressMonitorInputStream;
/**
 * Java带进度条的输入流
 * @author SingleX
 *
 */
public class Example12_13 {
	public static void main(String[] args) {
		byte b[] = new byte[30];
		JTextArea text = new JTextArea(20, 20);
		JFrame jFrame = new JFrame();
		jFrame.setSize(900, 700);
		jFrame.setVisible(true);
		jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jFrame.add(new JScrollPane(text), BorderLayout.CENTER);
		jFrame.validate();
		try {
			FileInputStream input = new FileInputStream("src\\Example12_13.java");
			ProgressMonitorInputStream input_progress = new ProgressMonitorInputStream(null, "读取Java文件", input);
			ProgressMonitor p = input_progress.getProgressMonitor();// 获取进度条
			while (input_progress.read(b) != -1) {
				String s= new String(b);
				text.append(s);
				Thread.sleep(200);//为了能看到进度条,有意延缓0.2s
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
	}
}

2 Responses Comment (2) Trackback (0)
  1. Honwhy :

    java太难了,哈哈。

发表评论