Olá pessoal, eu estou carregando um JTable com valores vindo de uma base de dados Access, meu cliente quer que o sistema seja capaz de ao selecionar mais que uma linha, possa ser feita a excluxão dos registros selecionados, alguém já fez este tipo de tarefa?
Excluir mais de uma linha simultâneamente a partir de linhas selecionadas no JTable
5 Respostas
Sim. O JTable tem o método getSelectedRows(), que te retorna todas as linhas que estão selecionadas.
Mas como eu faço para vincular as linhas selecionadas do JTable com os registros do BD?
Você pede os objetos para o seu model. E aí chama o DAO para excluí-los.
Se você não usa um TableModel próprio e ainda está insistindo na estupidez de se manter com o Default, você terá que guardar o ID numa das colunas, e pegar esses ids com getValueAt.
levi, eh exatamente isso q o Vini falou. E para ser mais especifico vc faz o seguinte:
1° Salve todos os id’s dentro de uma coluna hidden na tabela quando for preenche-la. Para isso basta setar na coluna os seguintes atributos:
suaColuna.setMinWidth(0);
suaColuna.setMaxWidth(0);
2° Pega todas as linhas selecionados através do método suaTabela.getSelectedRows(), e coloque em uma lista .
3° Agora pegue o id de cada registro q ele ker excluir, atraves do método suaTabela.getValueAt(a, b). Onde “a” é o numero do registro da tabela q vc deseja obter algum valor, e “b” é o numero da coluna q vc quer. Se a sua primeira coluna for o ID então “b” será 0.
4° Agora q tem os ID’s manda manda excluir essas paradas… 
Acho q agora da pra entender…
ahUAHuaUA
obs: Essa não é a melhor solução, mas para esse caso, acho q fica mais facil pro amigo entender.
vinigodoy, estou tentando implementar a sua idéia (usando o TableModel):
public void excluirAluno(Aluno... aluno) {
String sqlExcluir = "delete from Aluno where codigo = ?";
for (Aluno alu : aluno) {
try {
PreparedStatement pstm = conexao.prepareStatement(sqlExcluir);
pstm.setInt(0, alu.getCodigo());
pstm.execute();
pstm.close();
} catch(Exception ex) {
throw new RuntimeException(ex);
}
}
}
porém estou confuso na hora de realizar a chamada pegando os dados do TableModel… :?: :?: :?: :?: