Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Определенно MVC - что-то вроде этого пример, который ясно разделяет вещи. Проблема с примерами Swing состоит в том, что они, кажется, показывают MVC всю работу в материале колебания, который не кажется правильным мне
MVC является фантастическим для отдельного виджета, однако это становится немного непослушным, когда Вы имеете pages
и forms
с большим количеством виджетов.
Одна вещь, которую могло бы стоить изучить (и я не подтверждаю ее, я на самом деле не использовал ее, просто реализовал что-то очень похожее для меня), Бобы, Связывающие Платформу (JSR295)
Я использовал шаблон The Observer (использующий волшебство AspectJ) в прошлом с некоторым успехом, но нашел, что, если Вы не были осторожны, это быстро стало кластером.. uhh.. щелчок?
Быстро стало трудно справиться и самое главное чрезвычайно трудно отладить.
Править:
Для расширения немного на моем ответе мы использовали SWT, не Swing, таким образом, YMMV. Мы в основном использовали AspectJ для снятия трубки переноса данных от компонентов UI до объектов модели. Эти объекты модели были немым POJOs.
Фактическая бизнес-логика была сделана путем 'наблюдения' объектов модели с AspectJ и исчерпывания необходимого события, если они изменились. Таким образом, если бы Вы изменились, то значение в текстовом поле AspectJ запустило бы и скопировало бы то значение в POJO. Если бы то поле в POJO имело событие на нем для бизнес-логики, которая затем стреляла бы. Если бы та логика изменила какой-либо POJOs (и это могло), AspectJ заметить и скопировать значение с POJO в компонент UI.