Pergunta

Eu estou tentando criar um ouvinte chave em java no entanto, quando eu tento

KeyListener listener = new KeyListener();

O NetBeans está me dizendo que KeyListener é abstrato, não pode ser instanciado. Eu sei que eu estou faltando alguma outra parte deste ouvinte chave, mas uma vez que esta é minha primeira vez usando uma chave ouvinte estou inseguro de que mais necessidade i. Por que é me dizendo isso?

Obrigado,

Tomek

Foi útil?

Solução

KeyListener é uma interface - ele tem de ser implementado por alguma coisa. Então, você poderia fazer:

KeyListener listener = new SomeKeyListenerImplementation();

mas você não pode instanciar diretamente. Você poderia usar uma classe interna anônima:

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

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

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

Depende do que você quer fazer, basicamente.

Outras dicas

KeyListener é uma interface, por isso você deve escrever uma classe que implementa-lo para usá-lo. Como Jon sugerido, você poderia criar uma classe anônima que implementa-lo em linha, mas não há uma classe chamada KeyAdapter que é uma classe abstrata implementar KeyListener, com métodos vazios para cada método de interface. Se você subclasse KeyAdapter, então você só precisa substituir os métodos que se preocupam, nem todos os métodos. Assim, se você só se preocupava com keyPressed, você poderia fazer isso

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

Esta poderia poupar-lhe um pouco de trabalho.

KeyListener é uma interface, que significa que você pode escrever uma classe com base nele e implementar suas funções. Talvez este tutorial ajuda.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top