KeyListener + JTable

2 respostas
A

Pessoal… adicionei um KeyListener numa tabela que faz o seguinte… quando a tecla UP é pressionada retira a ultima linha da tabela…
Pois bem… o foco deveria ir pra linha de cima… o problema é que o KeyListener executa a remoção da linha primeiro, levando o foco pra posicao -1, -1 (lugar nenhum da tabela) depois é que a tabelaexecuta a ação interna de mudança de foco disparada pela tecla… isso faz com que o foco vá para a primeira linha da minha tabela…
Já tenrtei usar o metodo changeSelection() para forçar o foco… mas não adianta pelo mesmo motivo… o evento do keylistener eh disparado primeiro… então quando tento setar o foco ele nao vai para uma linha acima da que deveria ser setado o foco…
Alguém tem alguma ideia de como eu poderia fazer?

2 Respostas

thiagosil

andre2k2,
poste seu código, para ficar mais claro o que voce está
fazendo , assim talvez dê para saber porque está fazendo
a remoção da linha primeiro.

A

Ja resolvi o problema… para o trecho de código que retirava a linha eu invoquei o metodo invokeLater assim:

EventQueue.invokeLater(new Runnable() { public void run() { //Código } });

Esse metodo faz com que a Thread do AWT execute tudo que ela precisa e somente depois execute o codigo dentro do metodo run()! :wink:
Assim a Thread do AWT primeiro atualiza a seleção para a nova celula e só depois remove a linha… esta perfeito!!!

Criado 11 de setembro de 2007
Ultima resposta 12 de set. de 2007
Respostas 2
Participantes 2