Проблема с сокетами и потоками Java - PullRequest
2 голосов
/ 05 июня 2010

Я занимаюсь программированием сокетов в Java. Здесь я создал кнопку (Создать сервер) .. и когда я нажимаю на нее, запускается сервер ... но я хочу изменить имя кнопки на (Остановить сервер) после запуска сервера ... так что я сделал это .. но когда я нажимаю стартовый сервер, он запускается и имя кнопки остается прежним ...

и когда клиент подключается к нему, он меняет имя, чтобы остановить сервер ...

Скажите мне, что не так с этим кодом?

Вот моя часть кода ...

public void actionPerformed(ActionEvent ex)
{
    if(ex.getActionCommand() == "CreateServer")
    {
        bt1.setText("Stop Server");
        bt2.setEnabled(false);
        b5.setText("Server Started On Port " + tf2.getText());      
        System.out.println("Server started 1");
            create(Integer.parseInt(tf2.getText()));  //my func. to create server
        System.out.println("Server started 2");
    }       
}

и мой create () fucn. содержит некоторые сокеты и поток ... так скажите, в чем проблема ...

1 Ответ

2 голосов
/ 05 июня 2010

Вы используете свой сервер, вероятно, в вашей ветке AWT. Таким образом, это означает, что эта тема не может перерисовать ваш фрейм, а заголовок кнопки не меняется.

Создайте новую тему для своего сервера (этот код в слушателе действий кнопки):

Runnable serverRunnable = new Runnable()
{
    public void run()
    {
        create(Integer.parseInt(tf2.getText()));  //my func. to create server
    }
};
Thread serverThread = new Thread(serverRunnable);
serverThread.start();

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...