@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 который вы туда передаёте? Инфы мало.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
06 мая 2024, в 12:36
30000 руб./за проект
06 мая 2024, в 12:22
5000 руб./за проект
06 мая 2024, в 12:19
1500 руб./в час