Может ли модель обновить вид? - PullRequest
1 голос
/ 08 ноября 2010

У меня есть дизайн MVCish с использованием SWT.У меня есть класс, который реализует весь GUI (кнопки и слушатели действий), и у него есть объект Shop, который имеет список элементов.Время от времени, используя RMI (школьное задание), список обновляется (если в журнале появляется что-то новое, он сообщает об этом серверу, а сервер распространяет новый список во все магазины), и это все здорово.Проблема в том, что я понятия не имею, как заставить графический интерфейс перерисовывать новый список при нажатии кнопки.Что я хочу сделать:

1) в журнале есть новые материалы
2) он отправляет новый список на сервер
3) сервер отправляет список во все магазины
4) каждый магазин обновляет свой список
5) каждый магазин как-то говорит GUI перекрасить JTree, представляющий список.

Я уже набрал очки 1-4.Возможно ли реализовать 5)?Я намеренно пытался разделить модель и контроллер (поскольку нам нужно создать терминал и интерфейс с графическим интерфейсом), но теперь я вижу, что магазин получает новый список и даже не знает о существовании графического интерфейса (простокак нормальный MVC).
Теперь у меня есть кнопка «Обновить», которая берет список из объекта Shop и обновляет модель JTree, но, как сказал мне мой учитель, он хочет, чтобы он был автоматическим.Я мог бы сделать это, написав и магазин и графический интерфейс в одном классе, но это отстой.

Ответы [ 2 ]

2 голосов
/ 08 ноября 2010

Вы можете сделать свой просмотр Обозревателем модели и получать уведомления таким образом. Или же вы можете запланировать периодическое задание для выполнения действия по обновлению.

С точки зрения пользовательского интерфейса, я не хотел бы, чтобы представление автоматически обновлялось - если бы я углублялся во что-то и вдруг дерево было перезагружено, я был бы раздражен. Я думаю, что гораздо удобнее отображать сообщение типа «Доступны обновления каталога, нажмите« обновить », чтобы увидеть новые элементы» (вроде сообщения «новые ответы», а также просто выделите кнопку обновления (изменив цвет фона или что-то еще) ).

1 голос
/ 08 ноября 2010

То, что вы ищете, называется привязкой данных. Привязка данных - это идея соединения модели и представления вместе, чтобы обновляемая модель автоматически обновляла представление.

К сожалению, при быстром поиске не похоже, что для JTree доступно решение для привязки данных. Я могу ошибаться, но поиск заставляет меня поверить, что вам придется написать один самостоятельно.

Простым способом (хотя, возможно, и не лучшим решением) было бы иметь ссылку на JTree на модели. Затем вы можете указать JTree обновлять каждый раз, когда модель изменяется таким образом, что для этого потребуется изменить представление.

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