KeyListener в Java является абстрактным; не может быть создан? - PullRequest
3 голосов
/ 13 ноября 2008

Я пытаюсь создать Key Listener в Java, однако, когда я пытаюсь

KeyListener listener = new KeyListener();

Netbeans говорит мне, что KeyListener является абстрактным, не может быть создан. Я знаю, что мне не хватает другой части этого ключевого слушателя, но так как я впервые использую ключевой слушатель, я не уверен, что еще мне нужно. Почему это говорит мне это?

Спасибо

Томек

Ответы [ 3 ]

7 голосов
/ 13 ноября 2008

KeyListener - это интерфейс - он должен быть чем-то реализован. Так что вы могли бы сделать:

KeyListener listener = new SomeKeyListenerImplementation();

но вы не можете создать его экземпляр напрямую. Вы можете использовать анонимный внутренний класс:

KeyListener listener = new KeyListener()
{
    public void keyPressed(KeyEvent e) { /* ... */ }

    public void keyReleased(KeyEvent e) { /* ... */ }

    public void keyTyped(KeyEvent e) { /* ... */ }
};

Это в основном зависит от того, что вы хотите сделать.

5 голосов
/ 13 ноября 2008

KeyListener - это интерфейс, поэтому вы должны написать класс, который реализует его, чтобы использовать его. Как предположил Джон, вы можете создать анонимный класс, который реализует его встроенно, но есть класс с именем KeyAdapter, который представляет собой абстрактный класс, реализующий KeyListener, с пустыми методами для каждого метода интерфейса. Если вы создаете подкласс KeyAdapter, вам нужно переопределить только те методы, которые вам нужны, а не каждый метод. Таким образом, если вы заботитесь только о keyPressed, вы можете сделать это

KeyListener listener = new KeyAdapter()
{
    public void keyPressed(KeyEvent e) { /* ... */ }
};

Это может сэкономить вам немного работы.

1 голос
/ 13 ноября 2008

KeyListener - это интерфейс, который означает, что вы можете написать класс на его основе и реализовать его функции. Возможно, этот учебник поможет.

...