Pessoal estou tentando adicionar um método de pressionamento
de teclas UNICODE no campo1 que é um JTextField e dá um erro que
não sei identificar, o trecho do método está abaixo:
<anonymous FrmTeste$2> is not abstract and does not override abstract method keyReleased(java.awt.event.KeyEvent) in java.awt.event.KeyListener.
public void keyTyped(KeyEvent e) {
Será que tem de fazer diferente?
Muito obrigado pela atenção pessoal!
eh o seguinte: vc estah criando um objeto d uma classe anonima q implementa a interface KeyListener, certo? d acordo com a documentação, (http://java.sun.com/j2se/1.5.0/docs/api/java/awt/event/KeyListener.html) essa interface implementa 3 métodos: keyTyped, keyReleased e keyPressed. sempre q vc implementa uma interface em java, vc DEVE implementar (memso q seja com um nada) todos os metodos especificados pela interface. nesse caso, vc soh implementou um deles. mesmo q vc naum use, vc DEVE implementar os outros. exemplo:
public void keyReleased(KeyEvent e) {
// Nada também
}
});
outra solução eh vc usar uma classe adapter, q jah vem com todos os metodos implementados com “nada” e vc soh sobrescreve com os q vc quer realmente usar. mas veja q ha uma diferença: o primeiro eh uma interface, e o segundo (um adapter) eh uma classe q implementa essa interface, ou seja, em um caso ha implementação, noutro ha herança. se bem q na pratica possa parecer a mesma coisa, soh mudadndo d nome, naum eh!
eu, particularmente, prefiro implementar uma interface, pq eh mais “original”. naum q o adapter seja errado, mas ele foi feito justamente pra o programador “passar direto” nesses casos. e tem outro motivo tb, mas q naum eh muito importante se vc usa classes anonimas, como vc fez. vc pode implementar qts interfaces vc quiser, ou seja, implementar keylistener ou naum, naum tem problema. se vc herdar do adapter, vc jah “gastou” a herança dakela classe, jah q em java vc soh pode herdar diretamente d apenas uma outra classe. entendeu o q eu quis dizer?