KeyListener em Java é abstrato; não pode ser instanciado?
-
08-07-2019 - |
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
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.