小编典典
在执行长期运行的任务期间,您要定期检查是否ProgressMonitor已取消。在需要取消任务的地方进行检查是您的工作,否则谁知道您可以保留哪些资源。
因此,基本上,您想更改doSomethingAndUpdateProgress()方法,以便它也检查是否ProgressMonitor已取消。
这是一个演示如何工作的演示:
import java.awt.*;
import javax.swing.*;
public class TempProject extends Box{
public TempProject(){
super(BoxLayout.Y_AXIS);
final ProgressMonitor pm = new ProgressMonitor(this, "checking", "...", 0, 100);
final SwingWorker sw = new SwingWorker()
{
protected Integer doInBackground() throws Exception
{
int i = 0;
//While still doing work and progress monitor wasn't canceled
while (i++ < 100 && !pm.isCanceled()) {
System.out.println(i);
publish(i);
Thread.sleep(100);
}
return null;
}
@Override
protected void process(java.util.List chunks) {
for (int number : chunks) {
pm.setProgress(number);
}
}
};
sw.execute();
}
public static void main(String args[])
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JFrame frame = new JFrame();
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setContentPane(new TempProject());
frame.pack();
frame.setVisible(true);
}
});
}
}
2020-10-16