Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JTextField: отмена изменения / 8 сообщений из 8, страница 1 из 1
19.05.2006, 17:45
    #33739494
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTextField: отмена изменения
Нужно сразу после изменения текста в поле (JTextField) выполнить некоторую проверку и при ее отрицательном результате восстановить исходный текст.

-В DocumentListener менять текст нельзя, document блокирован.
-Переопределение PlainDocument.insertUpdate/removeUpdate возможно, но только присваивание старого значения (textField.setText()) не решает вопроса - текст в окне может стать некорректным.

Как сделать корректно?

Спасибо
...
Рейтинг: 0 / 0
19.05.2006, 17:50
    #33739512
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTextField: отмена изменения
а почему бы не сохранять ее в метод setOldText("xxxx") (в запасе не забываем про getOldText()) до всяких телодвижений, если че-то не то, берем старое значение из getFirsText())
...
Рейтинг: 0 / 0
19.05.2006, 17:52
    #33739519
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTextField: отмена изменения
извиняюсь, берем из getOldText(), а не из getFirstText())
...
Рейтинг: 0 / 0
19.05.2006, 17:58
    #33739530
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTextField: отмена изменения
Так вопрос не в том, откуда взять старое значение, а как это старое значение поместить в поле. Т.е. юзер нажимает клавишу 'a', начинается процесс изменения документа и вида и вот здесь надо корректно вмешаться
...
Рейтинг: 0 / 0
19.05.2006, 18:07
    #33739565
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTextField: отмена изменения
извиняюсь, но я нихрена не могу понять, причем здесь "document блокирован.", еще раз по порядку если можна
...
Рейтинг: 0 / 0
19.05.2006, 18:21
    #33739604
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTextField: отмена изменения
Первая попытка (сделать как это делали в WinApi, обработка EN_CHANGE и в ней если нужно восстановление текста, рекурсия естественно пресекается) здесь не получилась, т.е. в методах DocumentListener'а вызов setText приводит к исключению. Следующая попытка - вмешаться в работу методов PlainDocument. Исключений нет, но что-то я недопонимаю и текст в редакторе может искажаться
...
Рейтинг: 0 / 0
19.05.2006, 20:58
    #33739863
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTextField: отмена изменения
Похоже, вызов notify() после setText(oldText) (все в PlainDocument.insert/removeUpdate()) вопрос решает,
но некоторые сомнения остались
...
Рейтинг: 0 / 0
24.05.2006, 15:41
    #33748911
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTextField: отмена изменения
Однако я был невнимателен и вопрос остался.
notify тут не причем, у Eclipse в очередной раз исчезла консоль и я не заметил exception. setText(oldText)+throw new Exception() вроде бы работает, но не нравится
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JTextField: отмена изменения / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]