Java: получение значений из GUI - PullRequest
0 голосов
/ 22 октября 2011

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

Вот скриншот, чтобы прояснить, что я пытаюсь описать:

скриншот http://i52.tinypic.com/29cs11h.jpg

Параметры распространения содержатся в CardLayout, который управляется выпадающим списком.

Когда пользователь нажимает кнопку, мне нужно создать соответствующие доменные объекты для распространения. Прямо сейчас я просто передаю элемент ComboBox (который является enum) и панель CardLayouted на завод, который выбирает правильную подпанель и создает экземпляр правильного объекта. Но кажется неправильным передавать объекты графического интерфейса, а также делает фабрику бесполезной для любой другой ситуации.

Но я не могу придумать лучшего способа создания правильного объекта. Вероятно, только одна идея:

  • Пусть панель CardLayouted решит, какая панель поверх, и создать экземпляр надлежащий объект по запросу. Мне не понадобятся фабрики для этого. Но нормально ли для графического объекта делать такую ​​логику? Как правильно делегировать домену?

Все предложения будут оценены по достоинству!

1 Ответ

2 голосов
/ 22 октября 2011

Swing обычно имеет хорошую поддержку MVC и передачу или извлечение данных из объекта домена в элементы управления вводом / выводом.Я бы сделал следующее:

Создание панелей, которые вы вставили в CardLayout, с "пустым" доменным объектом в качестве модели GUI.(Или какой-то локатор, который может извлечь модель из другого слоя.) Затем подключите уведомления об изменениях к своим входным компонентам, которые обновят объект домена, когда значения во входных данных изменятся.

Затем, когда это произойдетчтобы сохранить объект домена, просто извлеките его из панели формы.

Если вам нужно показать одинаковое значение модели в двух элементах управления, они должны использовать одну и ту же модель.Если вам необходимо обновить объект, отображаемый на нижних уровнях кода, вам следует выполнить обновление для модели вместо / в дополнение к объекту домена.

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