Предложение по дизайну для пользовательского интерфейса Rich Client - PullRequest
3 голосов
/ 29 апреля 2011

Справочная информация:

Я имею большой опыт работы с веб-приложениями, но у меня очень мало или нет опыта работы с RCP.В настоящее время я работаю с Java Swing API.Все хорошо.Единственная проблема в том, что я не очень уверен в своем дизайне.

Вопрос:

В веб-приложении, когда мы реализуем MVC, мы пересылаем запрос вView.Controller не волнует, где его показать.Все будет отображаться на странице, как правило.Но в RCP нам нужно знать, где показывать эту форму / таблицу / и т. Д. Я имею в виду, какую панель, правую или левую, вверх или вниз.Это требует ссылки на контейнерный компонент, в котором мы хотим показать вещь.Как нам разработать наш код, чтобы получить эту ссылку?

Взять:

Я сохраняю ссылку на все компоненты первого уровня в главном классе - у которого есть main() метод.И тогда, где бы мне ни понадобился какой-то компонент, я делаю что-то вроде

JPanel formPanel = MainApp.getMainPanel().getFormPanel();
..
JPanel treePanel = MainApp.getMainPanel().getTreePanel();

Это нормально?

Ответы [ 2 ]

2 голосов
/ 29 апреля 2011

MVC на самом деле не так уж и важен в RCP, люди говорят об этом, но в основном это фигня.

Обязательно наличие отдельной модели ваших бизнес-объектов, не зависящей ни от какого кода пользовательского интерфейса.это важно.Но границы между представлениями и контроллерами имеют тенденцию быть более размытыми, я бы не стал слишком сильно их раздражать.

Элементы пользовательского интерфейса, естественно, имеют тенденцию организовываться в дерево, как у вас, хотя глобальные переменные, такие как ваша основная панельследует избегать.

Сильно опираться на схему наблюдения.

1 голос
/ 29 апреля 2011

Обзор архитектуры Swing подробно описывает архитектуру раздельной модели Swing .Я нашел эту концепцию полезной для понимания часто используемых компонентов Swing, а также популярных инструментов, таких как JFreeChart.

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