我正在尝试创建简单的Swing应用程序,其中包含很少的JEditorPanes。每个JEditorPane都包含内部带有html标签的文本。而且一些窗格包含带有标签<img src='http://some.url' />
的html,这意味着图像可能位于Web中的某个位置。 问题是 - 如果其中一个图片网址不可用 - 我的所有JEditorPanes和整个应用程序都挂了。(我在自己的线程中构建JEditorPanes,并在构建之后使用{将它们放入主框架中{1}})
我相信图像异步下载到JEditorPanes,有没有能力杀死这些狡猾的图像下载线程?
或许,有更好的解决方案?
由于
P.S。 使用SwingWorker。问题是 - 如果某个图片网址不可用 - 所有JEditorPanes都无法下载他们的图片。实际上他们并没有挂,但无法下载图片。为什么呢?
P.P.S。
后台主题:
SwingUtilities.invokeLater(...)
答案 0 :(得分:2)
考虑使用SwingWorker和example,或者可以从Runnable #Thread启动BackGround Task(输出必须包装到invokeLater()
答案 1 :(得分:1)
我同意mKorbel的观点是后台线程(1+对他的回答),而SwingWorker是一种方法。如果你需要同时运行多个后台线程,那么在使用SwingWorker时要小心,因为最近有一个错误导致所有SwingWorkers只使用一个线程。在这种情况下,请考虑使用Executors / Futures。