(二)如何使用Progress Bar
英文文档:http://download.oracle.com/javase/tutorial/uiswing/components/progress.html如何使用Progress Bars
(1)使用确定模式进度条
(2)使用不确定模式进度条
(3)使用进度监视器
(4)决定使用进度条还是进度监视器
(5)ProgressMonitorInputStream输入流进度监视器的使用
?
??? 有时候程序中的任务需要一段时间才能完成。一个好的程序应该向用户提供了一些指示信息:任务正在运行、任务需要多长时间、任务已经完成多少。这种指示工作可以使用进度的估算来描述(进度条),本质上是一种动态地图片。
??? 另一种方法是使用等待光标(wait cursor),使用Cursor类和setCursor方法。例如,下面代码使得wait cursor显示在container上(这个container可以使任何未指定cursor的组件)
?
???? 有时候,你不能立刻确定一个大任务所需的时间,或者仍无会阻塞在某一个状态很长时间。你可以不通过度量进度,而是把progress bar放入不确定模式(indeterminate mode)。不确定模式的进度条会动态指示任务正在完成。随着进度条可以显示更多有意义的信息,你应该把他转变为默认的确定模式。在Java样式中,不确定模式的进度条是这样的:
(深色块滚动)
?
Swing提供了三个类帮助你使用progress bars:
?
?JProgressBar??? 一个可视化的组件,图形化显示已经完成总任务的多少。参考“(1)使用确定模式进度条”使用典型的进度条。参考“(2)使用不确定模式进度条”在任务大小确定前滚动进度条
ProgressMonitor??? 一个非可视化组件。该类的实例检测任务进度,并且在必要的时候弹出对话框,参考“(3)使用进度监视器”
ProgressMonitorInputStream??? 一个关联进度监视器的输入流,监视器从该输入流中读取数据。你可以像其他基本I/O输入流一样使用它。你可以想”(3)使用进度监视器“中描述那样,通过调用getProgressMonitor和配置它获得该流的进度监视器。
?
??? 接着介绍“(4)决定使用进度条还是进度监视器”
(1)使用确定模式进度条??? 使用进度条度量本线程任务进度:
?
???? 下面是代码来自ProgressBarDemo.java创建和设置进度条:?
??? 在
ProgressBarDemo2.java中,模式设置为不确定,知道真正的进度开始位置:
???? 一个进度监视器不能重复使用,因此每一次新任务开始时,一定有一个新的进度监视器被创建。demo中,每点击开始按钮,程序都会创建一个进度监视器。??? 这句代码创建了进度监视器
???? 由于需要估算该输入流的可读长度,所以对话框弹出稍慢,某些设置可以参考进度监视器的。


