Re: Требование создать объект Swing в потоке отправки событий.
Я работаю над приложением, целью которого является мониторинг и отображение состояния различных удаленных встроенных серверов. Я довольно новичок в Java, и мое понимание требований в отношении объектов Swing и EDT является неполным.
Основной графический интерфейс запускается в EDT обычным образом следующим образом:
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
Затем пользователь может выбрать одну или несколько опций меню, соответствующих той или иной удаленной машине. Результатом этого является создание нового потока каждый раз следующим образом
new Thread(new VoterStatus(itemNumber)).start();
который вызывает метод «запуска» класса VoterStatus, который, в свою очередь, создает новое окно с JFrame. Новый поток, экземпляр класса VoterStatus, затем опрашивает (TCP и т. д.) конкретный указанный удаленный объект (itemNumber), собирая различные биты информации и отображая их в JFrame.
Может быть любое количество таких потоков, соответствующих экземпляру VoterStatus, каждый из которых обновляет свои собственные окна. Нет обмена данными между этими различными окнами/JFrame/задачами.
Кажется, это работает нормально, но безопасно ли?
Нарушил ли я правило создания компонентов Swing в EDT?
Будет ли полезно использование класса SwingWorker?
Я был бы признателен за любые комментарии от программистов Java, более опытных в таких вопросах.
Спасибо, Стив.