12.6.2 创建进度对话框
12.6.2 创建进度对话框
ProgressMonitor
的用法与JProgressBar
的用法基本相似,只是ProgressMonitor
可以直接创建一个进度对话框。
构造器
ProgressMonitor
提供了如下构造器。
方法 | 描述 |
---|---|
ProgressMonitor(Component parentComponent, Object message, String note, int min, int max) |
|
代码 创建进度对话框
例如,如下代码创建了一个进度对话框。
1 | final ProgressMonitor dialog = new ProgressMonitor(null,"等待任务完成","已完成:",0, target, getAmount()); |
使用上面代码创建的进度对话框如图12.30所示。
如何判断用户是否点击取消按钮
如图12.30所示,该对话框中包含了一个“取销”按钮,如果程序希望判断用户是否单击了该按钮,则可以通过ProgressMonitor
的isCanceled()
方法进行判断
使用ProgressMonitor
创建的对话框里包含的进度条是非常固定的,程序甚至不能设置该进度条是否包含边框(总是包含边框),不能设置进度不确定,不能改变进度条的方向(总是水平方向)。
进度对话框如何设置完成度
与普通进度条类似的是,进度对话框也不能自动监视目标任务的完成进度,程序通过调用进度对话框的setProgress
方法来改变进度条的完成比例(该方法类似于JProgressBar
的setValue
方法)
方法 | 描述 |
---|---|
void setProgress(int nv) |
Indicate the progress of the operation being monitored. |
程序 进度对话框
下面程序同样采用前面的SimulatedTarget
来模拟一个耗时的任务,并创建了一个进度对话框来监测该任务的完成百分比
1 | import javax.swing.*; |
上面程序中创建了一个进度对话框,并创建了一个Timer
计时器不断询问SimulatedTarget
任务的完成比例,进而设置进度对话框里进度条的完成比例。而且该计时器还负责监听用户是否单击了进度对话框中的“取销”按钮,如果用户单击了该按钮,则中止执行SimulatedTarget
任务的线程,并停止计时器,同时退出该程序。运行该程序,会看到如图12.30所示的对话框