Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с getter при add во View... 
V
    Опции темы
Killer_13
Дата 1.4.2012, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Даже не знал как правильно тему сформулировать...
Дело в том что при проектировании шахматной доски разбил все как положено на MVC.
Правильно или не оч - это уже другой вопрос.

Такая вот ситуация.
У меня есть функция которая расставляет фигурки по доске, в ней присутствует некая логика(она вызывает другую функцию для проверки) и так д..
Эту функцию я поместил в Контроллер.
Все данные функция тащит с модели в которой поля и геттеры и сеттеры на них.
В Вьюве двумерный массив с панелями на который все это дело ложится.

Код

    private void arrangeChessPieces() {

        for (int y = 0; y < 8; y++) {
            for (int x = 0; x < 8; x++) {
                this.chessBoardView.getCountChessCells()[y][x].add(
                        this.getPieceObject(this.chessBoardModel.getStrChessBoard()[y][x]),
                        BorderLayout.CENTER);
                this.chessBoardView.getCountChessCells()[y][x].validate();
            }
        }
    }


В итоге я получаю "нульпоинтер" кажется должно работать, но где зарыто не вижу
Может кто подскажет?
Не буду выкладывать все три класса так как там в общем наберется 500-600 строк кода, но если нужно - выложу без проблем.
PM MAIL   Вверх
Dummy
Дата 1.4.2012, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 21.5.2007

Репутация: 2
Всего: 19



Мне видится очень простая последовательность действий:

1. Определяем, какая из ссылок в момент падения имеет значение null. Возможные варианты: 
  •  chessBoardView
  •  chessboardModel
  •  массив, возвращаемый из this.getCountChessCells()
  •  элемент массива, возвращаемого из this.getCountChessCells()
  •  значение, возвращаемое из this.getPieceObject()
  •  массив, возвращаемый из this.chessBoardModel.getStrChessBoard()
  •  элемент массива, возвращаемого из this.chessBoardModel.getStrChessBoard()
2. Запускаем дебаггер, смотрим, какой из вариантов выше имеет место.
3. Исправляем ошибку.
4. Стараемся впредь избегать конструкций такого вида:
Код

this.chessBoardView.getCountChessCells()[y][x].add(this.getPieceObject(this.chessBoardModel.getStrChessBoard()[y][x]), BorderLayout.CENTER);

т. к. втискивать в одну строчку чуть ли не все вызовы внутри метода, как правило, не есть хорошая идея.
PM MAIL   Вверх
Killer_13
Дата 1.4.2012, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Цитата

Определяем, какая из ссылок в момент падения имеет значение null. Возможные варианты: 
 - вы меня заставили улыбнуться. smile Я смотрел на нуль через Дебагер только в двумерный массив с панелями. smile
 
Цитата

т. к. втискивать в одну строчку чуть ли не все вызовы внутри метода, как правило, не есть хорошая идея. 
 может какую-то альтернативу пердложите?
Создавать временные переменные и с их помощьэ сделать эту строку поменьше? 

Спасибо!

Добавлено через 14 минут и 38 секунд
Решил - передавал контроллер раньше чем положено, во вьюв еще не создались панели. Все было инициализировано, нульпоинтер был глубоко зарыт. smile
PM MAIL   Вверх
Dummy
Дата 1.4.2012, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 21.5.2007

Репутация: 2
Всего: 19



Цитата(Killer_13 @  1.4.2012,  14:14 Найти цитируемый пост)
 может какую-то альтернативу пердложите?
Создавать временные переменные и с их помощьэ сделать эту строку поменьше? 

Да. Вот, как минимум, конструкция this.chessBoardView.getCountChessCells()[y][x] у вас встречается два раза. Почему бы не завести ссылку с именем типа cell и потом работать с ней? Должно пойти на пользу как читаемости, так и отлаживаемости.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.