我如何模拟长时间运行的数据库操作?我的要求是在操作完成之前显示一个带有JProgressBar的对话框。
答案 0 :(得分:6)
使用后台线程(例如SwingWorker提供的线程)运行for循环,从1到10,循环内部有Thread.sleep。然后,如果它是一个确定模式JProgressBar,你可以通过将10 *循环索引传递给进度条来更新它的值(当然,在Swing线程,EDT上这样做)。
修改强>
@James Poulson:如果您使用的是SwingWorker对象,则可以使用publish/process
方法和done
方法在EDT上进行更新。如果您正在使用自己的后台线程,那么您一定要在Runnable中包装任何Swing调用组,并使用invokeLater在EDT上对其进行排队。