Java Swing中耗时的UI更新任务
我希望这不是关于如何在Swing中处理后台任务的另一个问题 我使用的是一个第三方非开源库,我没有它的源代码。 该库提供了一个XMLBuilder,它接受一个数据对象和一个模板对象,然后在扩展JComponent的对象内构建一些UI 因为这个构建方法需要更新JComponent,所以它需要在EDT上运行。 问题是,我给它提供了一组相当大的数据来处理,这需要相当长的时间,可能超过20秒。在此期间,我的整个申请都被冻结了Java Swing中耗时的UI更新任务,java,multithreading,swing,Java,Multithreading,Swing,我希望这不是关于如何在Swing中处理后台任务的另一个问题 我使用的是一个第三方非开源库,我没有它的源代码。 该库提供了一个XMLBuilder,它接受一个数据对象和一个模板对象,然后在扩展JComponent的对象内构建一些UI 因为这个构建方法需要更新JComponent,所以它需要在EDT上运行。 问题是,我给它提供了一组相当大的数据来处理,这需要相当长的时间,可能超过20秒。在此期间,我的整个申请都被冻结了 对此我能做些什么?听起来第三方库可能在EDT上做了大量非ui工作 如果是这样的话
对此我能做些什么?听起来第三方库可能在EDT上做了大量非ui工作
如果是这样的话,除了要求供应商修复它,或者如果他们不想/不能修复它,你就没有什么办法可以做了。清除库并以尊重EDT的方式重新实现它。你试过使用SwingWorker吗?我就是这么想的,我不认为要求供应商修复它是一种选择,我将不得不做一些自定义优化然后。