Возможно, вы захотите проверить мой Guts-GUI проект (среда приложения Swing, построенная на Guice).
Guts-GUI гарантирует, что ваши компоненты, даже если они созданы Guice, созданы в EDT.
Сам по себе Guice не предоставляет никакого способа объявить компонент, который будет создан в EDT. Я не уверен, что Guice Scopes может быть использован для этого (я думаю, что да), однако я не уверен, что какое-либо решение на основе Scope будет целесообразным, в частности, в отношении производительности.
Первый шаг к решению этой проблемы - убедиться, что Guice Injector создан изнутри EDT (с помощью SwingUtilities.invokeAndWait или invokeLater). Это то, что Guts-GUI делает в первую очередь. Следовательно, если некоторые компоненты были созданы Guice раньше, они будут созданы в EDT.
Затем вы должны убедиться, что любые экземпляры, введенные Guice, и которые требуют создания внедренных компонентов Swing, получены (например, через Injector.getInstance(...)
) из EDT.