Como excluir linhas em branco do JTable?(RESOLVIDO)

8 respostas
luizgomaciel

Ola, pessoal, alguem sabe um comando que apague as linhas que ficaram em branco do JTable, eu sei que exite o

.removeRow(numero da linha);

e outros ai… eu quero um comando que eu naum precise especificar a linha para ser excluida, mas um comando que apague todas as que ficaram em branco.

desde ja agradeço!

8 Respostas

InSeOfKn

Percorra linha por linha e se ela estiver em branco use .removeRow(numero da linha);
ou crie um método especifico para isso no seu modelo (recomendado)

Até!

Lucas_Rinaldi

Amigo uma opção é fazer assim

tbl = new JTable();
tblm = new DefaultTableModel();
        
for (int i= 0; i < tblm.getRowCount(); i++) {
     if (tblm.getValueAt(i, 0) == null) {
           tblm.removeRow(i);
     }
}

eu acredito que não haja um método que apague automaticamente as linhas brancas, mas voce pode verificar se elas existem e apaga-las.

Espero que ajude, abraço.

luizgomaciel

Lucas Rinaldi:
Amigo uma opção é fazer assim

tbl = new JTable();
tblm = new DefaultTableModel();
        
for (int i= 0; i < tblm.getRowCount(); i++) {
     if (tblm.getValueAt(i, 0) == null) {
           tblm.removeRow(i);
     }
}

eu acredito que não haja um método que apague automaticamente as linhas brancas, mas voce pode verificar se elas existem e apaga-las.

Espero que ajude, abraço.

valew pela força , mas isso eu ja tinha tentado, o que acontece, o removeRow apaga uma linha, e quando a repetição for vai para o numero seguinte , pois no codigo começou com 0, vai para o numero 1 , a linha da tabela que era 1 , por ter sido apagado uma linha antes dela, ela se torna o 0.

exemplo: apaga linha 0 , linha 1 volta e se torna a linha numero 0.

ai naum funciona o codigo.

bom, vou tentar fazer mais alguma coisa, mas preciso de ajuda , ve se vcs arrumam uma solução ai.

blz! abraços e t+

InSeOfKn

se quando entrasse no if você não incrementasse o contador

assim:

tbl = new JTable();  
tblm = new DefaultTableModel();  
   
int i=0;        
while (i < tblm.getRowCount()) {  
     if (tblm.getValueAt(i, 0) == null) {  
           tblm.removeRow(i);
           continue;  
     }
     i++;  
}

mas eu recomento que você implemente seu próprio Model e la crie um método que faça isso

até!

Lucas_Rinaldi
tbl = new JTable();  
tblm = new DefaultTableModel();  
          
for (int i= tblm.getRowCount() -1; i >= 0; i--) {  
      if (tblm.getValueAt(i, 0) == null) {  
            tblm.removeRow(i);  
      }  
}

Opa, então é só começar da última linha indo para a primeira.

InSeOfKn
Lucas Rinaldi:
tbl = new JTable();  
tblm = new DefaultTableModel();  
          
for (int i= tblm.getRowCount() -1; i >= 0; i--) {  
      if (tblm.getValueAt(i, 0) == null) {  
            tblm.removeRow(i);  
      }  
}

Opa, então é só começar da última linha indo para a primeira.

acho que esse jeito é mais eficiente que o meu pelo menos mais legível é!

luizgomaciel
InSeOfKn:
se quando entrasse no if você não incrementasse o contador

assim:

tbl = new JTable();  
tblm = new DefaultTableModel();  
   
int i=0;        
while (i < tblm.getRowCount()) {  
     if (tblm.getValueAt(i, 0) == null) {  
           tblm.removeRow(i);
           continue;  
     }
     i++;  
}

mas eu recomento que você implemente seu próprio Model e la crie um método que faça isso

até!

valew cara , esse ai em cima deu certo!

InSeOfKn

luizgomaciel:

valew cara , esse ai em cima deu certo!

testasse o do Lucas Rinaldi o código dele ta mais “bonito”

Mas voltando a minha recomendação

NÃO USE DEFAULT TABLE MODEL, mais detalhes você encontra aqui http://www.guj.com.br/posts/list/15/199067.java#1001295

Até a próxima!

Criado 10 de janeiro de 2011
Ultima resposta 11 de jan. de 2011
Respostas 8
Participantes 3