How to add an array of objects on a grid line of a java Jtable

Asked

Viewed 62 times

1

I have a code snippet that works as follows:

    protected void listaTodosRegistros(boolean bAberturaConsulta, JTable tbGrid, boolean bFiltraTodos) {
    DefaultTableModel modelo = new DefaultTableModel();
    modelo.addColumn("Código");
    modelo.addColumn("Descrição");

    CondicaoPagamentoDB dadosdb = new CondicaoPagamentoDB();
    ArrayList<ModelCondicaoPagamento> dados;
    if(bAberturaConsulta){
        dados = dadosdb.getTodos();
    } else {
        dados = this.SQLConsultagetTodosCompleto();
    }
    int posicao = 1;
    for (ModelCondicaoPagamento aux : dados) {
        modelo.addRow(new Object[]{
            aux.getCodigo(),
            aux.getDescricao()
        });
    }
    tbGrid.setModel(modelo);
}

protected ArrayList SQLConsultagetTodosCompleto() {
    this.adicionaCondicao();
    ArrayList listaDados = new ArrayList();
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    try {
        conn = ConexaoFirebird.getConexao();
        stmt = conn.createStatement();
        rs = stmt.executeQuery(this.SQL);
        while (rs.next()) {
            listaDados.add(this.getModelCarregado(rs));
        }
    } catch (SQLException erro) {
        JOptionPane.showMessageDialog(null, "Erro no sql, SQLConsultagetTodosCompleto: \n" + erro.getMessage());
    } finally {
        ConexaoFirebird.closeAll(conn);
    }
    return listaDados;
}

protected ModelPadrao getModelCarregado(ResultSet rs) throws SQLException {
        ModelCondicaoPagamento condicaopagamento = new ModelCondicaoPagamento();
        condicaopagamento.setCodigo(rs.getInt("cd_cond"));
        condicaopagamento.setDescricao(rs.getString("ds_cond"));
        condicaopagamento.setCodigoUsuario(rs.getInt("cd_usuario"));
        return condicaopagamento;
    }

But I’m having difficulty changing the method "listTodosRegisters", because I want to make this method receive by parameter the name of the class and method and return the value, as follows:

for (ModelCondicaoPagamento aux : dados) {
        ArrayList<Object> colunas = new ArrayList<>();
        for (Iterator iterator = listaCampos.iterator(); iterator.hasNext(); ) { 
            Campo campo = (Campo) iterator.next();
            colunas.add(campo.getValor());
        }           
        modelo.addRow(new Object []{colunas});                     
    }
    tbGrid.setModel(modelo);

Dai gets like this: Imagem como fica

And it should stay that way: Imagem como devia ficar

1 answer

0

I found the solution:

 Object [] objeto = new Object[2];
    for (int i=0;i<2;i++){
        objeto[i] = "teste"+i;
    }
    for (ModelCondicaoPagamento aux : dados) {
        modelo.addRow(objeto);
    }

Browser other questions tagged

You are not signed in. Login or sign up in order to post.