KeyListener в Java является абстрактным;нельзя создать экземпляр?

StackOverflow https://stackoverflow.com/questions/286605

  •  08-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь создать прослушиватель ключей в Java, однако, когда я пытаюсь

KeyListener listener = new KeyListener();

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

Спасибо,

Томек

Это было полезно?

Решение

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

KeyListener listener = new SomeKeyListenerImplementation();

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

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

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

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top