addKeyListener() em JComponent customizado [RESOLVIDO]

4 respostas
rissato

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.

4 Respostas

ViniGodoy

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?

rissato

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(

ViniGodoy

Realmente, não parece uma tarefa trivial…

Uma possibilidade é redirecionar os eventos.

  1. Faça a sua classe ser o listener das duas que ela agrega;
  2. 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! :slight_smile:

rissato

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:

Criado 2 de janeiro de 2007
Ultima resposta 3 de jan. de 2007
Respostas 4
Participantes 2