Dúvida simples com JTable [Resolvido]

4 respostas
leoviniga

Seguinte…estou implementando meu próprio TableModel e tenho que arrumar algumas coisinhas que não tenho certeza de como fazer.

Meu problema no momento é o método para remover as linhas…está funcionando bem quando eu seleciono campos consecutivos para remover,porém se eu pular um campo vai dar zica. Dá pra perceber só vendo o método:

public void removerPessoa(int[] indiceLinhas) {
		for (int i = indiceLinhas.length - 1; i >= 0; i--) {
			linhas.remove(i);
			fireTableRowsDeleted(i, i);
		}		
	}

Eu vi que isso ia dar esse problema na hora mas nem parei pra arrumar,só marquei e continuei o resto, agora que terminei voltei pra isso e não sei como fazer ^^
Imagino que seja bem simples.
Desde já obrigado.

4 Respostas

d34d_d3v1l

O erro de lógica esta gritante…

Você deve REMOVER na posição indiceLinhas[i] … e não remover “i”…

veja:

public void removerPessoa(int[] indiceLinhas) {  
        for (int i = 0; i < indiceLinhas.length; i++) {  
           linhas.remove(indiceLinhas[i]);  
         fireTableRowsDeleted(indiceLinhas[i], indiceLinhas[i]);  
         }         
    }

tenta isso!
Abraços

leoviniga

rsrs…o erro foi bem de bobera mesmo…sinto até vontade de me explicar…é que antes o meu for tava assim :

public void removerPessoa(int[] indiceLinhas) {  
        for (int i : indiceLinhas) {  
            linhas.remove(i);  
            fireTableRowsDeleted(i, i);  
        }         
    }

mas daí removia de cima pra baixo e obviamente dava erro :slight_smile:
troquei o for e esqueci de trocar o resto :lol:
Enfim…Obrigado pela ajuda.

leoviniga

Pra gerações futuras:
O certo ficou

public void removerPessoa(int[] indiceLinhas) {
		for (int i = indiceLinhas.length - 1; i >= 0; i--) {
			linhas.remove(indiceLinhas[i]);
			fireTableRowsDeleted(indiceLinhas[i], indiceLinhas[i]);
		}		
	}
d34d_d3v1l

Que bom que conseguiu…
Abraços!

Criado 15 de abril de 2011
Ultima resposta 16 de abr. de 2011
Respostas 4
Participantes 2