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

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

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

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


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