Я пишу программу Java, которая действует как сервер и клиент. Оставляя несоответствующие биты, он имеет три класса: Главная, Сервер и Клиент. Main просто устанавливает меню и содержит основной метод. Сервер и Клиент поддерживают алгоритмы для сервера и клиента соответственно.Как назвать тяжелый алгоритм от JButton ActionListener
То, что я пытаюсь сделать, - это вызвать алгоритм из классов сервера и клиента и их графических интерфейсов в зависимости от нажатой кнопки. Код для вызова сервера в настоящее время выглядит следующим образом:
serverButton = new JButton();
serverButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
server.showGUI();
server.run();
}
});
Проблема заключается в том, что server.run()
работает непрерывно в течение достаточно долгого времени и много тяжелой работы. Это исключает GUI, который из моего понимания заключается в том, что я вызываю метод из EDT.
Как я могу назвать этот метод из основного потока? Мне нужно создать SwingWorker
и оставить его там до конца server.run()?
[ 'SwingWorker'] (https://docs.oracle .com/javase/tutorial/uiswing/parallelurrency/worker.html) - это один из способов; показан другой подход [здесь] (http://stackoverflow.com/a/3245805/230513). – trashgod