Olá pessoal… estou com um problema intrigante e não encontrei nada que possa solucionar, então resolvi postar aqui pra saber se alguém já passou por isso ou tem uma idéia do que se faz para resolver
No meu caso, tenho uma jtable que possui checkbox como conteúdo da primeira coluna… A ideia é que o usuário possa selecionar as linhas e remover através do menu ou através da tecla de atalho “Delete”…
Acontece que se eu remover através do menu a linha é removida normalmente, porém se eu removo através da tecla de atalho, a remoção é “diferente” (acreditem)… acontece que continua a marcação no checkbox da linha q eu removi (dá problema quando removo o último elemento, já que vai marcar a linha que não existe mais)…
Acredito que seja alguma coisa de buffer de teclado, pois quando removo pelo menu não acontece esse problema… Mas já fiz de tudo e até agora não consegui resolver
Segue abaixo o código para vocês verem como estou implementando:
public JMenuItem getJMnItmDeleteItem() {
if (jMnItmDeleteItem == null) {
jMnItmDeleteItem = new JMenuItem();
jMnItmDeleteItem.setEnabled(false);
jMnItmDeleteItem.setText("Excluir Item");
jMnItmDeleteItem.setIcon(new ImageIcon("images/menu/excluir_item_2.png"));
jMnItmDeleteItem.setAccelerator((KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0, true)));
jMnItmDeleteItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
deleteItens();
}
});
}
return jMnItmDeleteItem;
}
Abraços e Obrigado!
Cara, que código bagunçado 
Não sei se entendi bem o seu problema, mas você pode tentar o seguinte: coloque um if verificando se a linha que quer remover é a última, e se for mande o foco para uma linha a cima. Tipo:
if (aTabela.getSelectedRow() == (aTabela.getRowCount() - 1))
aTabela.editCellAt(aTabela.getSelectedRow()-1, aTabela.getSelectedColumn());
[]´s
Fala Thiago… primeiramente obrigado por responder…
Então cara… isso não resolve… como eu disse, não acontece o problema quando eu removo o último elemento pelo menu, apenas quando utilizo a tecla de atalho (Delete)… portanto eu consigo remover a última linha sem nenhum problema (desde que acesso pelo menu)… por isso eu acho que deve ser algum problema de buffer de teclado ou algo parecido…
Mas mesmo assim, obrigado… Alguém tem mais alguma sugestão??
ps.: código bagunçado?? pq??
Abraços!
Que problema exatamente acontece quando você exclui pelo delete? Que exception? O delete e a barra de menu chamam o mesmo método?
E aí Thiago…
O menu e o delete chamam exatamente o mesmo método… o delete é um atalho para o menu (ver código que postei acima)
A exeception só acontece quando eu removo o último :? …
Uma coisa que reparei e com certeza tem a ver com o problema, é o fato de que quando eu excluo pelo menu, o item é desmarcado no ckeckbox da jtable após a exclusão… porém quando eu excluo com o delete continua marcado (mas na verdade não está marcado, é como se apenas a interface estivesse enxergando a marcação) hahaha… é uma confusão… realmente não estou entendendo o que está rolando aí… :lol:
mas é isso aí… vou brigando com esse problema (por enquanto desabilitei a tecla de atalho delete hehe)…
Abraços!
Posta aí o método deleteItens()
Olá ViniGodoy…
Cara… o método deleteItens() tem apenas algumas instruções básicas para remoção de linhas… o método verifica os campos selecionados pelo checkbox e remove a linha através do tableModel.removeRow(linha)…
O problema não está nesse método, já depurei e verifiquei isso… como já disse, o método funciona normalmente desde que seja acionado pelo menu… o problema está com a tecla de atalho… vai saber… =O
Obrigado! Abraços! =)
Olá Jorge…
Também estou com este problema aqui no meu trampo,
Vamos ver se a gente consegue resolver, aí posto a resolução…