Olá,
estou tentando adicionar um KeyListener a um JComponent modificado que eu fiz. Eu consigo adicionar os KL normalmente em componentes “padrão” do swing. Mas nesse em específico (que eu montei juntando 2 ou mais componentes padrão) não estou conseguindo adicionar o bendito KL. Alguém já passou por isso? Obrigado.
addKeyListener() em JComponent customizado [RESOLVIDO]
4 Respostas
O teu componente tem o método addKeyListener, ou nem sequer possui esse método?
O java dá algum erro? Ou o KeyListener adicionado simplesmente não funciona?
Só não funciona… o meu componente herda de JComponent, então ele herda a versão “JComponent” do método addKeyListener. Eu estou procurando uma maneira de implementar o método do meu componente mas, por enquanto ainda não consegui… 8(
Realmente, não parece uma tarefa trivial…
Uma possibilidade é redirecionar os eventos.
- Faça a sua classe ser o listener das duas que ela agrega;
- Para todo evento recebido pelas classes agregadas, converta em eventos da sua classe e envie aos seus keylisteners.
A lista dos keyListeners da sua classe pode ser obtida pelo método getKeyListeners().
Se achar uma maneira melhor, dá um toque! 
No meu componente customizado, tem um JComboBox, o qual é o ítem que necessitava ter o KeyListener. O problema é que pra adicionar um KeyListener a um JComboBox, é preciso “anexar” o KeyListener ao editor do JComboBox, não ao combo em si. Essa linha está dentro de uma classe que extende JComboBox: