![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
esselt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 3.10.2005 Репутация: нет Всего: нет |
Netbeans 4.1, JDK1.5.0_04
Есть JTextField, у которого повешен listener на событие keyTyped. В обработчике читеатся JTextField.getText(). Проблема в том, что он возвращает всегда на один символ меньше, чем введено в JTextField. Это так задумано или где-то руки погнулись? |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Не гарантированно, что ты получишь событие от кнопки, после того как оно будет обработанно компонентом. Если хочешь отслеживать изменение текста в документе используй textField.getDocument().addDocumentListener();.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
carper |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 2.3.2005 Репутация: 4 Всего: 8 |
esselt
Если это очередная попытка изобрести велосипед с проверкой вводимого значения, то рекомендую попристальнее посмотреть в сторону JFormattedTextField. Если же нужна более сложная проверка, то присмотритесь еще к методам remove, shouldYieldFocus, public boolean verify(JComponent input) and public void focusGained(FocusEvent e) (ну и остальное по желанию). Добавьте сюда паттерны (чтобы не изобретать велосипед еще и здесь), не забудьте, что Swing компоненты используют один (собственный) поток, т.е. поменьше диалогов и самовольного изменения текста где попало, не забудьте решить, что делать, если пользователь закроет форму с "неверным" текстом в поле, добавьте специй в виде красивого форматирования по выходу из поля ... В результате сможете получить неплохое блюдо. ![]() P.S. Я не поленился проделать такую работу только для основных компонентов. В остальных случаях получилось разумнее использовать JFormattedTextField плюс проверку уже на этапе записи информации из этих полей куда-либо. Вроде пользователи пока не жалуются, что их не водят за ручку. ![]() |
|||
|
||||
esselt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 3.10.2005 Репутация: нет Всего: нет |
Здесь изобретается несколько иной велосипед
![]() Это поле используется для ввода строки поиска в таблице. Соответственно - ввели символ (или удалили) и ищется наиболее подходящее значение в таблице. |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Ну так и используй DocumentListener, ведь текст можно вставить и из буфера используя только мышь.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
carper |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 2.3.2005 Репутация: 4 Всего: 8 |
esselt
Ну, тогда достаточно только того, что я привел в примере, а именно insertString и remove (просто и быстро) - заодно можно будет и из буфера работать и позволить удалять символы. ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |