3

如何模拟长时间运行的数据库操作?我的要求是在操作完成之前显示一个带有 JProgressBar 的对话框。

4

1 回答 1

6

使用后台线程(例如由 SwingWorker 提供的线程)运行从 1 到 10 的 for 循环,其中 Thread.sleep 在循环内。然后,如果它是确定模式 JProgressBar,您可以通过将 10 * 循环索引传递给进度条来更新它的值(当然要注意在 Swing 线程,EDT 上这样做)。

编辑:
@James Poulson:如果您使用的是 SwingWorker 对象,您将使用publish/process方法和done方法在 EDT 上进行更新。如果您使用自己的后台线程,您一定要在 Runnable 中包装任何一组 Swing 调用,并使用 invokeLater 在 EDT 上对其进行排队。

于 2011-10-30T20:18:00.630 回答