Re:Adicionar linha ao JTable

6 respostas
G

ola
segue:

javax.swing.table.DefaultTableModel modelo = new javax.swing.table.DefaultTableModel ();

Object[] obj = new Object[ qtd colunas ]

for( int cont = 1; cont < qtd colunas; cont++){

modelo.addRow( obj[ cont-1] = Objeto));

}

ola depois se vc quiser
tenho uma classe que pega a uma consulta SQL e joga na JTable
tipo " SELECT CODIGO_CLIENTE, NOME_CLIENTE FROM CLIENTE ORDER BY CODIGO_CLIENTE"

ela jogaria as nas colunas da JTable CODIGO_CLIENTE eNOME_CLIENTE
ele preencheria as linhas conforme o tanto de linhas que tiver na consulta
flw

6 Respostas

G

ola
tipo olhe este exemplo talvez vc entenda melhor

//carrega as colunas do banco de dados para ao modelo
           for(int cont =1; cont <=rsmd.getColumnCount(); cont++){
              //adiciona a columa ao modelo
              model.addColumn(rsmd.getColumnName(cont));               
           } 

//pega a quantidade de colunas
           int nCols = rsmd.getColumnCount();
          
           //cria array de objetos
          Object[] linha = new Object[nCols] ; 
          
          //faz loop ate a ultima linha da tabela
           while(rs.next()){  
              
              for(int i=1;i<=rsmd.getColumnCount();i++){
                linha[i-1]= rs.getObject(i); 
              }
              //adiciona a linha ao modelo da tabela
              model.addRow(linha);    
          
           }

depois disso vc seta o modelo da JTable
tabela.setModel(model);

vc tem que adicionar os elementos ao objeto e depois
ao modelo observe que ele carrega as colunas e depois fora do for
ele adiciona o Array de Objeto linha ao addRow() acho que este exemplo vai te ajudar mais
depois disso vc seta o modelo da JTable

tabela.setModel(model);

D

getAndSet:
ola
tipo olhe este exemplo talvez vc entenda melhor

//carrega as colunas do banco de dados para ao modelo
           for(int cont =1; cont <=rsmd.getColumnCount(); cont++){
              //adiciona a columa ao modelo
              model.addColumn(rsmd.getColumnName(cont));               
           } 

//pega a quantidade de colunas
           int nCols = rsmd.getColumnCount();
          
           //cria array de objetos
          Object[] linha = new Object[nCols] ; 
          
          //faz loop ate a ultima linha da tabela
           while(rs.next()){  
              
              for(int i=1;i<=rsmd.getColumnCount();i++){
                linha[i-1]= rs.getObject(i); 
              }
              //adiciona a linha ao modelo da tabela
              model.addRow(linha);    
          
           }

depois disso vc seta o modelo da JTable
tabela.setModel(model);

vc tem que adicionar os elementos ao objeto e depois
ao modelo observe que ele carrega as colunas e depois fora do for
ele adiciona o Array de Objeto linha ao addRow() acho que este exemplo vai te ajudar mais
depois disso vc seta o modelo da JTable

tabela.setModel(model);

while(rs.next()){
mas tipo, oq seria o “rs”???

no caso ele ea tabela ?

como fazer o rs receber a tabela!???

P

Pessoal, pra quem puder ajudar, estou com o mesmo problema.

Estou tentando inserir os dados em um jTable da seguinte forma:

DefaultTableModel modelo = new DefaultTableModel();

try {
            while (rsLupa.next()) {
                int cont = 0;
                int cod = rsLupa.getInt("cod");
                String razSocial = rsLupa.getString("razSocial");
                String fantasia = rsLupa.getString("fantasia");
                String cnpj = rsLupa.getString("cnpj");
                String cpf = rsLupa.getString("cpf");
                if (cnpj == null) {
                    //Atribuir valor com CPF
                    modelo.addRow(new Object[]{cod, razSocial, fantasia,cpf});
                } else {
                    //Atribuir valor com CNPJ
                    modelo.addRow(new Object[]{cod, razSocial, fantasia,cnpj});
                }
            }
            //System.out.println(modelo);
            jTable1.setModel(modelo);//adiciona o modelo a tabela criada para consulta
        } catch (SQLException ex) {
            Logger.getLogger(TelaLupaCliente.class.getName()).log(Level.SEVERE, null, ex);
        }

Porém no meu caso além de não dar erro nenhum, o jTable some da tela. Outra coisa é que tento imprimir o ojeto pra verificar o que foi gravado e mostra somente o endereço de memória, apesar de já ter conferido nas variaveis (razSocial, fantasia, por exemplo) e os dados estarem preenchidos corretamente.

Alguem pode me ajudar?

J

Pessoal estou com uma duvida eu fiz a mesma coisa que esta em baixo esta carregando tudo beleza, mas minha tabela só que o porem não consigo colocar mais um titulo
na tabela ele não vai fazer parte no banco é só para mostrar o titulo por motivos da impressão que é feita quero que apareça titulo

DefaultTableModel lcadastro = new DefaultTableModel(null, new String[]{"Id", "Nome", "Endereço", "Bairro", "Numero da Casa", "Telefone", "Celular", "CEP", "Naturalidade", "Nacionalidade", "CPF", "RG", "Data de Nascimento", "CTPS", "Serie"});
    List<Cadastro> Listacadastro;
    ListSelectionModel jcadastro;

    
 private void visualizacao() throws SQLException {
        while (lcadastro.getRowCount() > 0) {
            lcadastro.removeRow(0);
        }


        List<Cadastro> cad;
        CadastroDAO dao = new CadastroDAO();

        cad = dao.getLista();
        if (cad.isEmpty()) {
            JOptionPane.showMessageDialog(null, "Não Tem Nada  Cadastrado no Momento !");
        } else {
            
            
            
            String[] linha = new String[]{null,null, null, null, null, null, null, null, null, null, null, null, null, null, null, null};
            for (int i = 0; i < cad.size(); i++) {
                lcadastro.addRow(linha);
                lcadastro.setValueAt(cad.get(i).getId(), i, 0);
                lcadastro.setValueAt(cad.get(i).getNome(), i, 1);
                lcadastro.setValueAt(cad.get(i).getEndereco(), i, 2);
                lcadastro.setValueAt(cad.get(i).getBairro(), i, 3);
                lcadastro.setValueAt(cad.get(i).getNumero_casa(), i, 4);
                lcadastro.setValueAt(cad.get(i).getTelefone(), i, 5);
                lcadastro.setValueAt(cad.get(i).getCelular(), i, 6);
                lcadastro.setValueAt(cad.get(i).getCep(), i, 7);
                lcadastro.setValueAt(cad.get(i).getNaturalidade(), i, 8);
                lcadastro.setValueAt(cad.get(i).getNacionalidade(), i, 9);
                lcadastro.setValueAt(cad.get(i).getCpf(), i, 10);
                lcadastro.setValueAt(cad.get(i).getRg(), i, 11);
                lcadastro.setValueAt(cad.get(i).getData_nascimento(), i, 12);
                lcadastro.setValueAt(cad.get(i).getCtps(), i, 13);
                lcadastro.setValueAt(cad.get(i).getSerie(), i, 14);
               
            }
        }

    }
L

Minha dúvida se resume ao título.

Tenho uma JTable criada a partir de um objeto de “AbstractTableModel” com 3 colunas e X linhas.

Queria saber os comandos básicos para fazer aparecer +1 linha logo abaixo da liha X (ou, mais apropriadamente, X-1) - se possível, com as suas três células já preenchidas com valores String (ou qualquer coisa).

É quase uma emergência, preciso terminar isso pra ontem!

Mas como diria Bob Marley… “everything is gonna be allright”.

Agradecido.

L

Rapaz…
O Compilador acusa problemas de conversão.
Ele não aceita o “cast” de TMStatus, meu TableModel criado como instância de AbstractTableModel, para a classe DefaultTableModel.

Tentei de duas maneiras:

1- Com dicas adaptadas da internet:

DefaultTableModel model=((DefaultTableModel)mesaStatus.getModel());
model.addRow(new String [] {"Mesa "+TMStatus.getColumnCount(),“R$ 0.00”, “Disponível”} );

onde mesaStatus é o objeto JTable que usa o TMStatus.

2 - Adaptado da tua dica:

Object[] obj = new Object[ TMStatus.getColumnCount() ];

for( int cont = 1; cont < TMStatus.getColumnCount(); cont++)

{

((DefaultTableModel)TMStatus).addRow(obj);

}

ele nem acusa “nullPointerException” no comando addRow(), mas pára acusando “classCastException” na linha do Object[]…

e agora?

Criado 29 de outubro de 2006
Ultima resposta 29 de out. de 2006
Respostas 6
Participantes 5