@smcopandakun

Потоки, NullPointerException, Java, ЧЯДНТ?

Здравствуйте, мне нужно написать "чат" на Java, используя потоки и GUI. Я не силен ни в том, ни в другом.

private class Receiver  implements Runnable{
        /**
         * run() вызовется после запуска нити из конструктора клиента чата.
         */

        public void run() {
            while (!s.isClosed()) { //сходу проверяем коннект.
                String line = null;
                try {
                    line = socketReader.readLine(); // пробуем прочесть
    } catch (IOException e) { // если в момент чтения ошибка, то...
        // проверим, что это не банальное штатное закрытие сокета сервером
        if ("Socket closed".equals(e.getMessage())) {
            break;
        }
        System.out.println("Connection lost"); // а сюда мы попадем в случае ошибок сети.
        close(); // ну и закрываем сокет (кстати, вызвается метод класса ChatClient, есть доступ)
    }
    if (line == null) {  // строка будет null если сервер прикрыл коннект по своей инициативе, сеть работает
        System.out.println("Server has closed connection");
        close(); // ...закрываемся
    } else { // иначе печатаем то, что прислал сервер.
        System.out.println("Server:" + line);       
    }
}
}

Версия в консоли работает прекрасно, но... мои знания заканчиваются. Дальше мне нужно заполнить TextArea, которую мне сгенерировал NetBeans. Почему-то стыдно за следующую строчку, которую я дописываю сюда.
else { // иначе печатаем то, что прислал сервер.
        jChatBox.setText(jChatBox.getText() + line)      
    }

Не знаю какую ошибку я допустил, но, думаю что очень глупую. В итоге получаю NullPointerExeption на той самой строчке.
Подскажите мне, пожалуйста, как решить эту проблему. Заранее спасибо.
  • Вопрос задан
  • 2502 просмотра
Пригласить эксперта
Ответы на вопрос 2
@FoxInSox
jChatBox == null
Причины из приведенного вами кода не понять.
Ответ написан
FanKiLL
@FanKiLL
Во первых проверить если у TextArea не выставлен setEditable(false);
Во вторых у TextArea есть метод append который добавит текст к уже имеющемся.
В данном случае конструкция jChatBox.setText(jChatBox.getText() + line) не нужна меняйте на append плюс надеюсь вы к строкам добавляете "\n"
иначе будет каша.
В третьих почитайте как работать с TextArea там немного всё подругому чем с обычными текстовыми контролами

Хз, что ещё написать... Без кода трудно сказать почему null. И вообще что именно null TextArea или line который вы туда передаёте? Инфы мало.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы