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