Java KeyListener во внутреннем классе не получает событие по какой-то причине - PullRequest
1 голос
/ 25 октября 2011

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

Это код:

    public class CaesarFrame extends JFrame{
        ...
        private JTextField jtf1 = new JTextField(20);
        ...
        jtf1.addKeyListener(this.new InputFieldKeyListener());
        ...
        class InputFieldKeyListener extends KeyAdapter{
                public void keyTyped(KeyEvent e) {
                    System.out.println(e.toString());
                }
        }
    }

Спасибо за помощь!

Ответы [ 2 ]

3 голосов
/ 25 октября 2011

Вам нужно this.new ... при добавлении KeyListener? Можете ли вы попробовать опустить this. и просто поставить:

jtf1.addKeyListener(new InputFieldKeyListener());

Кроме того, не знаете точно, что вы пытаетесь сделать точно, но убедитесь, что вы используете правильное событие. Ваш JTextField может генерировать keyPressed или keyReleased событий, когда вы думаете, что это будет keyTyped.

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

2 голосов
/ 25 октября 2011

"Чтобы инициировать события клавиатуры, компонент должен иметь фокус клавиатуры." - Как написать прослушиватель клавиш .В качестве альтернативы рассмотрим привязки клавиш, примеры которых можно найти в ответах на этот вопрос .

...