|
|
|
JTextField: отмена изменения
|
|||
|---|---|---|---|
|
#18+
Нужно сразу после изменения текста в поле (JTextField) выполнить некоторую проверку и при ее отрицательном результате восстановить исходный текст. -В DocumentListener менять текст нельзя, document блокирован. -Переопределение PlainDocument.insertUpdate/removeUpdate возможно, но только присваивание старого значения (textField.setText()) не решает вопроса - текст в окне может стать некорректным. Как сделать корректно? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 17:45 |
|
||
|
JTextField: отмена изменения
|
|||
|---|---|---|---|
|
#18+
а почему бы не сохранять ее в метод setOldText("xxxx") (в запасе не забываем про getOldText()) до всяких телодвижений, если че-то не то, берем старое значение из getFirsText()) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 17:50 |
|
||
|
JTextField: отмена изменения
|
|||
|---|---|---|---|
|
#18+
извиняюсь, берем из getOldText(), а не из getFirstText()) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 17:52 |
|
||
|
JTextField: отмена изменения
|
|||
|---|---|---|---|
|
#18+
Так вопрос не в том, откуда взять старое значение, а как это старое значение поместить в поле. Т.е. юзер нажимает клавишу 'a', начинается процесс изменения документа и вида и вот здесь надо корректно вмешаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 17:58 |
|
||
|
JTextField: отмена изменения
|
|||
|---|---|---|---|
|
#18+
извиняюсь, но я нихрена не могу понять, причем здесь "document блокирован.", еще раз по порядку если можна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 18:07 |
|
||
|
JTextField: отмена изменения
|
|||
|---|---|---|---|
|
#18+
Первая попытка (сделать как это делали в WinApi, обработка EN_CHANGE и в ней если нужно восстановление текста, рекурсия естественно пресекается) здесь не получилась, т.е. в методах DocumentListener'а вызов setText приводит к исключению. Следующая попытка - вмешаться в работу методов PlainDocument. Исключений нет, но что-то я недопонимаю и текст в редакторе может искажаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 18:21 |
|
||
|
JTextField: отмена изменения
|
|||
|---|---|---|---|
|
#18+
Похоже, вызов notify() после setText(oldText) (все в PlainDocument.insert/removeUpdate()) вопрос решает, но некоторые сомнения остались ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 20:58 |
|
||
|
JTextField: отмена изменения
|
|||
|---|---|---|---|
|
#18+
Однако я был невнимателен и вопрос остался. notify тут не причем, у Eclipse в очередной раз исчезла консоль и я не заметил exception. setText(oldText)+throw new Exception() вроде бы работает, но не нравится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 15:41 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=724&tid=2149142]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 341ms |

| 0 / 0 |
