2012-01-10 5 views
2

У меня довольно большой интерфейс swing (несколько текстовых полей, comboboxes, checkboxes, настраиваемые всплывающие диалоговые окна и т. Д.) И модель данных, которая должна быть изменена при изменении управления ui: новый текст вводится в текстовое поле, флажок и т. д.ручное привязку данных качания

Вопрос в том, что лучше всего организовать обновление + проверку входных значений.

К сожалению, я не могу использовать привязывающую структуру, такую ​​как beansbinding.

ответ

2

Добавьте соответствующих слушателей к компонентам и обновите модель при запуске событий.

Или создать свой пользовательский интерфейс, так что все будет сохранен в модели только тогда, когда ОК кнопку Сохранить или щёлкнули. Это также помогает с проверкой, потому что вам просто нужно проверить все сразу, когда нажимается кнопка.

+0

+1 'вам просто нужно проверить все сразу, когда кнопка – mKorbel

+0

Я делаю качели таким образом, и я всегда чувствовал, что я был глупым для этого вручную; поэтому +1. Я также хотел бы добавить, что вы не должны полагаться на привязку beans. Последнее, что я проверил, было таким же мертвым, как и проект. Посмотрите на их страницу проблем: http://java.net/jira/browse/BEANSBINDING#selectedTab=com.atlassian.jira.plugin.system.project%3Aissues-panel Я бы сказал, что это примерно в одном состоянии. – Bill

2

Объедините ответ JB Nizet с валидацией в ваших компонентах, например, используя JFormattedTextField (или расширенную версию этого). Вы можете использовать JFormattedTextField также как редактор для JComboBox экземпляров. Вы можете добавить проверку на JSlider экземпляров.

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

Это можно сравнить с современным сайтом: проверка на стороне клиента с помощью javascript, чтобы дать пользователю немедленную обратную связь + подтверждение на стороне сервера для проверки, которая не проходит через пользовательский интерфейс, или во избежание неприятных пользователей, минуя клиентскую сторону валидация

Смежные вопросы