Guice在UI线程问题之外创建了Swing组件?
问题内容:
我正在将Google Guice作为IOC容器使用Java
Swing应用程序。事情进展顺利。用户界面存在一些问题。当将标准L&F替换为“推入像素”时,由于Guice在UI线程之外创建了Swing组件,因此Substance
L&F应用程序未运行。
有没有办法告诉Guice在UI线程中创建Swing组件?
也许我应该创建自定义提供程序,在SwingUtilities.invokeAndWait(Runnable)
创建它们后将返回Swing组件。
我不喜欢在UI线程中运行整个应用程序的想法,但是也许这只是一个完美的解决方案。
问题答案:
IMO不应使用Guice创建组件,而应使用服务来创建组件。注入服务后,应该很容易确保在EDT上创建组件(使用invokeAndWait
)