Я интегрировал Substance в мое приложение и столкнулся с несколькими проблемами относительно его внутреннего EDT (Event Dispatch Thread ) проверки процедур. Вещество абсолютно отказывается строить классы пользовательского интерфейса за пределами EDT. Я сделал много Swing/AWT, и я знаю большинство правил относительно EDT. Я использую SwingWorker, SwingUtilties.invokeLater для изменения компонентов. Я всегда, хотя эти компоненты могут быть CONSTRUCTED вне EDT, но должны быть реализованы и манипулированы на EDT. Другими словами, вы можете создавать и настраивать настройки по умолчанию в фоновом режиме, но вызов pack/setVisible должен быть EDT, а также любые последующие вызовы для управления компонентом.
Причина, по которой я спрашиваю, заключается в том, что у меня есть особенно "многообещающее" окно для построения, включающее множество виджетов, состояния и ресурсов (много значков). Раньше я построил окно на фоновом методе SwingWorker и сделал окно видимым в готовом методе. Никогда не было ни одной проблемы. При переключении на вещество внутренняя проверка EDT укусит меня.
Мне удалось реорганизовать код, чтобы обойти это. Я могу построить на EDT, который не является хорошим решением, поскольку все приложение будет блокироваться. Я также могу реорганизовать еще больше и стараюсь загружать все дополнительные ресурсы за пределами EDT.
Обернуть его... Безопасно ли конструировать виджеты Swing/AWT NOT на тему Dispatch Event?