С помощью графического интерфейса Java Swing, как я могу запустить серверное гнездо в фоновом режиме и по-прежнему использовать графический интерфейс? - PullRequest
1 голос
/ 24 марта 2012

У меня работает базовый сервер, но я хочу иметь возможность нажать кнопку в графическом интерфейсе для запуска указанного сервера.

В настоящее время, когда я нажимаю кнопку для запуска сервера, кнопка остается нажатой, а остальная часть графического интерфейса недоступна, пока я не принудительно остановлю ее в Netbeans.Я хочу включить кнопки для остановки сервера и т. Д., Поэтому я хочу знать, как я могу запустить серверный код в фоновом режиме, взаимодействуя с GUI для чего-либо еще.

Как я могу добиться этого в графическом интерфейсе?

Ответы [ 2 ]

11 голосов
/ 24 марта 2012

Не блокируйте EDT (поток отправки событий).Запустите сервер на Thread.См. Параллельность в Swing для получения более подробной информации.


Упоминается в комментарии, но также см. Этот (очень) связанный пример предоставления Swing GUI для сервера иклиент .

enter image description here

5 голосов
/ 24 марта 2012

Для этого вы должны использовать класс Thread.
Реализуйте интерфейс runnable в вашем основном классе, а затем переопределите метод run (). Поместите коды, которые вы хотите, чтобы они выполнялись при нажатии кнопки в методе run (). Затем в кнопке ActionListener напишите этот код:

new Thread(this).start();

Это выполнит код в другом «потоке».

...