Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопросы по JGoodies, Валидация 
:(
    Опции темы
ShkVal
Дата 14.10.2005, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 10.11.2004

Репутация: 1
Всего: 1



Посмотрите сами по стеку поставив точку останова на setOrderNo() явно не вызывается и мне не понятно, что нужно сделать чтобы вызвался этот метод. Запускаю main() из com.jgoodies.validation.tutorial.basics.ComponentFeedbackExample
PM MAIL   Вверх
ShkVal
Дата 14.10.2005, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 10.11.2004

Репутация: 1
Всего: 1



Вроде понял это указывается сдесь
severityOrderNoField = ExampleComponentFactory.createTextField(
orderModel.getModel(Order.PROPERTYNAME_ORDER_NO), false);
если не так поправте.
Так как я плохо знаю SWING и тем более JGoodies не могли бы подсказать что даёт этот вызов firePropertyChange(PROPERTYNAME_ORDER_NO, oldValue, newValue) в setOrderNo()?
PM MAIL   Вверх
batigoal
Дата 14.10.2005, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Цитата(ShkVal @ 14.10.2005, 13:04)
не могли бы подсказать что даёт этот вызов firePropertyChange(PROPERTYNAME_ORDER_NO, oldValue, newValue) в setOrderNo()?

Собственно, создает новое событие, событие изменения поля. Видимо, PROPERTYNAME_ORDER_NO - это имя поля, oldValue - старое значение, newValue - новое значение.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
carper
Дата 14.10.2005, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 2.3.2005

Репутация: 4
Всего: 8



ShkVal
Цитата(ShkVal @ 14.10.2005, 11:52)
Посмотрите сами по стеку поставив точку останова на setOrderNo() явно


Да не могу я посмотреть, я же JGoodies целиком не ставил (да и нет его у меня, есть только то, что Вы указали, а это морока приторачивать отдельно валидатор, собирать пакет, да ну его smile ).
Кнопка OK в тестовом примере есть?
По ее нажатию, если проходит валидация !, метод updateModel разве не вызывается?


Цитата(ShkVal @ 14.10.2005, 12:04)
не могли бы подсказать что даёт этот вызов firePropertyChange(PROPERTYNAME_ORDER_NO, oldValue, newValue) в setOrderNo()?


Это работа MVC (model-view-controller) - модель - представление - контроллер.
Модель отвечает за работу с данными, например, хранит их, предоставляет невизуальные методы для добавления и отображения данных...
Представление отвечает за отображение данных.
Контроллер отвечает за взаимодействие (например, отрабатывает события от мыши и клавиатуры - ну, скажем нажали на клавишу - контролер вызовет метод модели для добавления символа и метод представления для его отображения) между представлением и моделью.
Часто модель и контроллер логически объединяют вместе.

Также есть интерфейсные классы, типа JTextField, которые "прячут" от нас реализацию MVC и выступают как некий готовый объект, обладающий всеми свойствами MVC сразу.

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

Кстати, метод firePropertyChange это не метод Goodies, насколько я могу догадываться это часть работы стандартного механизма java.beans (отсюда и наши public set and get методы называются именно так (с эти префиксом), иначе их не будет использовать IDE).

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

Теперь понятно, что сделали разработчики JGoodies в их validate?
Они не стали трогать представление - т.е. вы можете использовать с этим модулем любые компоненты SWING, включая собственноручно написанные (главное, чтобы в них не была затронута модель).
Они просто переписали стандартную модель (именно это Вы сделали бы и сами, т.к. это самый простой и правильный путь как-то изменить работу с данными).

Чтобы мы могли как-то взаимодействовать с этой переписанной моделью, они нам предоставили интерфейс и описание своего видения как должны работать методы этого самого интерфейса.

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


P.S. Короче, set и get методы можете оставить теми же, что и в примере, только скорректируйте названия (например, setMySuperTextField) и, разумеется, получайте/отдавайте величины своего поля.





PM MAIL   Вверх
ShkVal
Дата 14.10.2005, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 10.11.2004

Репутация: 1
Всего: 1



carper, спасибо. Рейтинг я тебе поднял за помощь. smile Как всё создать я понял, а как работает всё пока нет. Но мне это пока и не надо. Главное разобрался как делать (что надо создать и что где вызвать)
PM MAIL   Вверх
carper
Дата 14.10.2005, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 2.3.2005

Репутация: 4
Всего: 8



ShkVal

Цитата(ShkVal @ 14.10.2005, 14:40)
Рейтинг я тебе поднял за помощь.


Спасибо.
Не думаю, что сильно помог, но я старался. smile


Цитата(ShkVal @ 14.10.2005, 14:40)
Главное разобрался как делать (что надо создать и что где вызвать)


Согласен, т.к. что-то мне смутно подсказывает, что особо глубоко в JGoodies копать и не стоит.
Ведь он и покупался для облегчения жизни, а не ее усложнения. smile

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0565 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.