Есть ли простой способ получить символы с клавиатуры, не нажимая Enter в Java?

Я хотел бы знать, есть ли простой способ получить ввод символов из JTextField в Java, как это происходит, а не после нажатия клавиши ввода.

В моем случае я хочу, чтобы символы (текст) считывались, и при нажатии клавиши ввода что-то делалось с уже собранными символами.


person Fred    schedule 13.11.2009    source источник


Ответы (4)


Попробуйте добавить KeyListener в JTextField

person Kevin    schedule 13.11.2009
comment
Спасибо, Кевин, я посмотрю на это. - person Fred; 13.11.2009

Хотя есть способы прослушивания событий нажатия клавиш, похоже, что для задачи, которую вы хотите выполнить, вам следует дождаться нажатия клавиши ввода, а затем делать то, что вам нужно, ссылаясь на значение jtextfield. Поле jtext уже считывает символы, которые вводит пользователь, вам не нужен пользовательский обработчик, чтобы дублировать это (если вы действительно не хотите делать это посимвольно и включать нетекстовые символы (например, «heg[backspace]llo[ enter]» каким-то образом обрабатывается иначе, чем «hello[enter]»).

person Brian Schroth    schedule 13.11.2009
comment
Нет ли способа исключить управляющие символы, возможно, определив диапазон или указав некоторую предопределенную константу в качестве аргумента? Я взглянул на класс нажатий клавиш, но он, похоже, больше нацелен на управление играми и так далее, но, насколько я понял, вы можете зарегистрировать, какая клавиша вас интересует. Но я только бегло просмотрел его. - person Fred; 13.11.2009
comment
У Брайана пока лучший ответ. В любом случае управляющие символы не попадут в текстовую строку текстового поля, текст оттуда можно использовать. И нет, вы не можете зарегистрироваться для отдельных персонажей. Что вы ДОЛЖНЫ сделать, так это зарегистрировать keyListener для обработки ENTER, когда это произойдет. Тогда вы захотите перейти к следующему полю или что-то в этом роде. - person Carl Smotricz; 13.11.2009

Вы можете добавить DocumentListener в документ JTextField, т.е.

textField.getDocument().addDocumentListener(...);
person user101884    schedule 13.11.2009

Разрешено ли пользователю вставлять текст? (Могут ли они щелкнуть правой кнопкой мыши и выбрать «вставить»?)

Если это так, KeyListeners не будет работать, и вам понадобятся DocumentListeners.

person Reverend Gonzo    schedule 13.11.2009
comment
Хм, интересно, я об этом не подумал. - person Fred; 13.11.2009