Я написал базовую программу типа калькулятора, используя WindowsBuilder в Eclise neon и Java 1.8. Он почти завершен, все работает так, как я хочу. Кроме ввода с клавиатуры.
В качестве последнего штриха я хотел бы обнаруживать события keyTyped и сопоставлять их с нажатиями кнопок, чтобы пользователи могли использовать клавиатуру для ввода вместо нажатия кнопок мышью.
Я добавил "реализует KeyListener" в класс программы...
public class CashRegister implements KeyListener {
private JTextField keyb;
Я попытался настроить слушателя на невидимый JTextField, называемый keyb....
private void initialize() {
keyb = new JTextField(20);
keyb.addKeyListener(this);
keyb.setFocusable(true);
keyb.requestFocusInWindow();
И я добавил методы для обработки захваченного нажатия клавиши...
public void keyTyped (KeyEvent e) {
String out = "";
out = out + e.getKeyChar();
pence1text.setText(out);
}
public void keyPressed (KeyEvent e) {
}
public void keyReleased (KeyEvent e) {
}
Итак, на данном этапе все, что я ожидаю, чтобы доказать, что это работает, это ключевой символ, который я нажимаю, чтобы появиться в текстовом поле под названием «pence1text». Однако это не работает, когда я нажимаю клавишу, ничего не отображается.
Думаю проблема может быть в фокусе. Погуглив и проверив stackoverlow, я добавил следующие строки...
keyb.setFocusable(true);
keyb.requestFocusInWindow();
как указано выше, но все равно не повезло.
У кого-нибудь есть идеи, что я делаю неправильно, или что я могу попробовать дальше?
Спасибо
public boolean requestFocusInWindow()
Какое значение возвращаетсяboolean
? Держу пари, этоfalse
. - person Andrew Thompson   schedule 02.05.2017JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
. - person Sergiy Medvynskyy   schedule 02.05.2017KeyListener
- person MadProgrammer   schedule 02.05.2017KeyListener
с текстовыми компонентами,DocumentListener
,DocumentFilter
и привязки клавиш API - все лучшие решения... в зависимости от того, что вы пытаетесь сделать - person MadProgrammer   schedule 03.05.2017