Gente no meu JTable qro deletar as linhas que foram adicionadas, mas que naum possuem nada escrito.
Tudo legal até que eu tentei deixar o JTable em branco (deletar todas linhas), mas a ultima fica. Isso eu ainda consegui resolver se a tabela só tiver uma linha, mas se tiver mais de uma ela não apaga a ultima, é necessário entrar e sair da tela (para deixar a tela com apenas uma linha) para ser possível a exclusão, segue o codigo:
Botão que sai da tela, e consequentemente apaga as linhas em branco:
private void btnRetornaActionPerformed(java.awt.event.ActionEvent evt) {
boolean flag = true;
while(flag){
if(modelo.getValueAt(0, 0).toString().trim().equalsIgnoreCase("")){
modelo.removeRow(0);
}
for(int i = 1; i < modelo.getRowCount(); i++){
if(modelo.getValueAt(i, 0).toString().trim().equalsIgnoreCase("")){
modelo.removeRow(i);
i--;
}
}
}
this.dispose();
}
Botão que adiciona linha:
private void btnAddLinhaActionPerformed(java.awt.event.ActionEvent evt) {
modelo = (DefaultTableModel) tabTiposPessoas.getModel();
modelo.addRow(new String[]{""});
tabTiposPessoas.setModel(modelo);
}
Fala brother!!!
Então acho que vi algo estranho!
Note que quando você usa a estrutura de repetição, você pega o numero de tuplas existentes certo?
Mas tem um porém, quando entra no IF, ele diminui 1 na contagem total de tuplas.
Não sei se entendi sua ideia, me corrija: Quando excluir uma tupla, você volta no mesmo ponto, pegando a coluna que ficará na posição da que foi excluida, certo?
Até ai concordo,
tente criar uma variavel recebendo o numero total de colunas, para não ter confusão, quando executar o IF,
Não sei se fui claro, qualquer duvida avise, vou colocar um modelo aqui:
[code] int total_tuplas = modelo.getRowCount();
for( int = 1; i < total_tuplas; i++){…}[/code]
Abraçooo!!!
a variavel i vai diminuindo, no caso se mantendo o mesmo valor (i++ depois i–), pois eu vou excluindo os registros da lista, se só aumentasse ele naum excluiria todos!
vlw!
Isso eu entendi…
mas o q eu sugeri funcionou?
eu naum testei, mas naum daria no mesmo?
Tentou começar o valor de “i” com 0? =]
estoura index of bounds pq naum tem linha de nro 0!

Ueh… e como tu consegue fazer isto:
if(modelo.getValueAt(0, 0).toString().trim().equalsIgnoreCase("")){
modelo.removeRow(0);
}
Não está referenciando a linha 0 e coluna 0 ? Me corrija se eu estiver errado
Sim, mas eu sei lah como o JAVA aceitou isso eu sei q o 0 naum funcionava para percorrer :?
Outra coisa que estive pensando … Se vc começar a remover da primeira linha pra ultima… a proxima linha vai ser o valor da linha apagada… ou seja:
Se eu removo a linha 1… agora a linha 2 vai ser a linha 1. Então, a linha 1 “logicamente” continuará existindo. Sendo assim… teremos esta linha 1 até que a ultima seja apagada. Então seria bom apagar da ultima até a primeira.
eh q eu só qro apagar as linhas em branco, dae eu começo do inicio verificando quais estão em branco ou naum!
Mas então amigão… é isto!
Caso você tenha 2 linhas em branco, certo?
Aí vai vc apaga a primeira na posição 1… ok. A que estava na posição 2 foi pra posição 1…
Seu loop vai procurar agora na posição 2 se tem linha em branco. Não tem. Porque? Porque a linha em branco que estava na posição 2 está na 1 agora e vc ja verificou ela.
Porque só quando entra denovo que apaga? Porque quando vc entra denovo… zera o valor de i no loop e ela encontra a linha 1.
Capiche?
Nesta linha:
for(int i = 1; i < modelo.getRowCount(); i++){
não deveria ser:
for(int i = 0; i < modelo.getRowCount(); i++){
Tenta ae, vlw.
mas eu to fazendo qdo apagar uma linha a minha variavel i aumenta 1 e diminui 1 ficando na mesma posição, certo?
Faça seu proprio table model
Crie um método que verifica se a linha está em branco, se estiver retorna true
Você faz um lupi para verificar todas as linhas, as que voltarem como true vc exclui
Não use default table model, só vai te dar dor de cabeça… O código vira um xutômetro, vc vai xutando aki e ali, até dar certo, sem saber o que está fazendo.
Entre aki, e veja as vantagens de seu proprio table model, e crie-o em menos de 2 minutos: http://www.guj.com.br/posts/list/15/199067.java#1001295
Oooo brother mais ta tenso heim!
faz o que eu te sugeri la em cima q vai funfa…
Nao vai da na mesma não…
Executa isso no lápis e papel como se fosse vc o compilador…
você vai ver a diferença de usar
o getRow() dentro e fora do FOR…
flws