Jump to content
JGD

Preencher jTable a partir de um ArrayList

Recommended Posts

Olá Pessoal,  estou tentando carregar uma jTable a partir de DefaultTableModel (duas colunas). 

Mas a table não preenchem automaticamente ao carregar... Ficando vazia só com o cabeçalho definido no "modelo".

 

Tenho a classe  TableModelProd configurada uma vez que via jButtons eu Adiciono e removo linhas...

respectivamente: tabelaModel.addRow  e tabelaModel.removeRow(table.getSelectedRow());

- Pelo menos penso eu!?!

 

No "DAO" tenho um ArrayList :

 

 

 

public List<Produtos> read(){
        
        List<Produtos> dados = new ArrayList<>(); 
        
        try {
            Connection connection  = ConexaoUtil.getInstance().getConnection();
            String xSql ="SELECT idProd,Produto FROM tbProdutos Order by Produto";
            
            PreparedStatement statement = connection.prepareStatement(xSql);
            ResultSet resultset = statement.executeQuery();
            while (resultset.next()) {
                
                Produtos produto = new Produtos();
                produto.setIdProd(resultset.getInt("idProd"));
                produto.setNome(resultset.getString("Produto"));
                                
                dados.add(produto);
                }    
             
            connection.close();
            
            } catch (Exception e) {
                e.printStackTrace();
        
            }
        
        return dados;
        
    }


 

 

Na tela Principal faço: 

 

CadastroProdDAO cadastroProdDAO = new CadastroProdDAO();
        List<Produtos> result3 = cadastroProdDAO.read();
                
        for (int i = 0; i < result3.size(); i++) {
            tableModel.addRow(new Object[]{result3.get(i).getIdProd(), result3.get(i).getNome()});    
           System.out.println(result3.get(i).getIdProd() +"|"+ result3.get(i).getNome());
        } 

 

Imprimindo este resultado no console (tela principal ):

1|B1 1,50M
2|B1 1,60M

 

Agradeço desde já qualquer ajuda

 

JGD

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Bianca Leonardo
      Olá, pessoal.
      Estou desenvolvendo um sistema onde em uma tela de cadastro de pedidos existe um jbutton para pesquisar produtos, ao cliclar nesse botão abre uma nova JFrame com o campo pesquisar e uma Jtable. 
      Ao selecionar uma linha no JTable o Id do produto, e nome deveria retornar para a tela JFrame aberta anteriormente (o que não esta acontecendo, pois está abrindo uma nova tela de pedidos com os campos devidamente preenchidos).
       
      Código da Tela de pedido chamando a tela pesquisar produto:
       
      private void btnPesquisarProdutoActionPerformed(java.awt.event.ActionEvent evt) {                                                             // abrir a tela pesquisar produto         TelaPesquisarProdutos produtos = new TelaPesquisarProdutos();         produtos.setVisible(true);         this.add(produtos);  
      código da tela pesquisar produto setando os campos na tela pedido:
      private void tblProdutosMouseClicked(java.awt.event.MouseEvent evt) {                                                  TelaPedidos frame = new TelaPedidos();                  frame.jTabbedPane1.setSelectedIndex(1);         frame.txtIdProduto.setText(tblProdutos.getValueAt(tblProdutos.getSelectedRow(), 0).toString());         frame.txtProduto.setText(tblProdutos.getValueAt(tblProdutos.getSelectedRow(), 1).toString());                  frame.setVisible(true);         this.dispose();     }  
      Resumindo, só quero que os dois campos do JTable retorne para o primeiro JFrame aberto.
       
       
    • By calves_oliveira
      Olá pessoal,
      sou iniciante e antes de postar aqui meu pedido de ajuda estou a uns dias pesquisando como sanar minhas duvidas mas sem sucesso.
      bom vamos, lá…
      Em um form tenho um campo jtextField, jtable e botões novo, inserir, atualizar, excluir e atualizar.
      manipular a tabela do banco de dados está tudo ok , carregar a jtable tbm!
       
      porem não estou conseguindo atualizar o jtable, ao excluir, editar sem ter que ficar buscando do BD o tempo todo até mesmo que não faz sentido isso. (vários lugares ensinam desta maneira).
      segue as classes:
      package Model.Table; import java.util.ArrayList; import javax.swing.table.AbstractTableModel; /** * * @author Usuario */ public abstract class TableModelPadrao extends AbstractTableModel { protected String[] colunas; protected ArrayList linhas; protected boolean[] colEditavel; public TableModelPadrao(ArrayList linhas) { setColunas(criarColunas()); setColEditavel(colEditavel); this.linhas = linhas; } protected abstract String[] criarColunas(); protected abstract boolean[] colEditavel(); @Override public int getRowCount() { if (linhas != null) { return linhas.size(); } else { return 0; } } @Override public int getColumnCount() { return colunas.length; } @Override public boolean isCellEditable(int row, int col) { return false; } @Override public Class getColumnClass(int c) { return getValueAt(0, c).getClass(); } @Override public String getColumnName(int col) { return colunas[col]; } //Getter e Setter public String[] getColunas() { return colunas; } public final void setColunas(String[] colunas) { this.colunas = colunas; } public ArrayList getLinhas() { return linhas; } public void setLinhas(ArrayList linhas) { this.linhas = linhas; fireTableDataChanged(); } public boolean[] getColEditavel() { return colEditavel; } public void setColEditavel(boolean[] colEditavel) { this.colEditavel = colEditavel; } public abstract void addRow(Object o); public abstract void removeRow(int linha); @Override public abstract void setValueAt(Object o, int linha, int coluna); } package Model.Table; import Model.ArroladoPor; import java.util.ArrayList; /** * * @author Usuario */ public class TableArroladoPor extends TableModelPadrao { public TableArroladoPor(ArrayList linhas) { super(linhas); } @Override public Object getValueAt(int rowIndex, int columnIndex) { ArroladoPor a = (ArroladoPor) linhas.get(rowIndex); switch (columnIndex) { case 0: return a.getIdArrolado(); case 1: return a.getDescricao(); default: throw new IndexOutOfBoundsException("Numero de colunas no TableArroladoPor" + " não é compativel com dados do banco"); } } @Override protected String[] criarColunas() { return new String[]{"Id", "Descricão"}; } @Override protected boolean[] colEditavel() { return new boolean[]{false, false}; } @Override public void addRow(Object o) { this.linhas.add(o); this.fireTableDataChanged(); } @Override public void removeRow(int linha) { this.linhas.remove(linha); this.fireTableRowsDeleted(linha, linha); } @Override public void setValueAt(Object obj, int linha, int coluna) { ArroladoPor a = (ArroladoPor) linhas.get(linha); //verifica qual valor vai ser alterado switch (coluna) { // case 0: // Primeira coluna é o codigo. // a.setIdArrolado(Integer.parseInt((String) obj)); // break; case 1: // Segunda coluna é o descricao. a.setDescricao(obj.toString()); break; } //avisa que os dados mudaram this.fireTableCellUpdated(linha, coluna); } } package Controller.Helper; import Model.ArroladoPor; import Dao.ArroladoPorDao; import Model.Table.TableArroladoPor; import View.Forms.FrmArroladoPor; import java.awt.Color; import java.sql.SQLException; import java.util.ArrayList; import javax.swing.JOptionPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.RowFilter; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.TableModel; import javax.swing.table.TableRowSorter; /** * * @author Usuario */ public class ArroladoPorHelper { private FrmArroladoPor view; private TableArroladoPor modeloTabela; private HelperForHall helperForHall; private ArroladoPorDao dao; private ArroladoPor objClasse; public ArroladoPorHelper(FrmArroladoPor view) throws SQLException { this.dao = new ArroladoPorDao(); this.view = view; this.helperForHall = new HelperForHall(); } public ArroladoPorHelper() { } public ArroladoPor getModeloArroladoPor() { String descricao = view.getTxtDescricao().getText().toUpperCase().trim(); int id = Integer.parseInt((view.getTabela().getValueAt(view.getTabela().getSelectedRow(), 0)).toString()); objClasse = new ArroladoPor(id, descricao); return objClasse; } public ArroladoPor getModeloInserir() { String descricao = view.getTxtDescricao().getText().toUpperCase().trim(); objClasse = new ArroladoPor(descricao); return objClasse; } public void inserir() throws SQLException { if (view.getTxtDescricao().getText().trim().equalsIgnoreCase("")) { JOptionPane.showMessageDialog(null, "O campo descrição não pode ficar vazio!", "Validação ", JOptionPane.ERROR_MESSAGE); view.getTxtDescricao().setBackground(Color.LIGHT_GRAY); } else { if (dao.VerificacaoSalvar(getModeloInserir()) != true) { dao.salvar(getModeloInserir());//SALVA NO BANCO modeloTabela.addRow(objClasse);//INSERI OBJ NA TABELA modeloTabela.fireTableDataChanged(); javax.swing.JOptionPane.showMessageDialog(null, "Novo registro armazenado com sucesso!", "Cadastro", JOptionPane.INFORMATION_MESSAGE); } else { javax.swing.JOptionPane.showMessageDialog(null, "Não foi possivel salvar, registro já existente!", "Verificação ao Salvar ", JOptionPane.ERROR_MESSAGE); } } } public void atualizar() throws SQLException { if (view.getTabela().getSelectedRow() != -1) { if (dao.verificaAlterar(getModeloArroladoPor()) == true) { JOptionPane.showMessageDialog(null, "Não foi possivel editar, registro já existente!", "Verificação ao Editar", JOptionPane.ERROR_MESSAGE); } else { dao.alterar(getModeloArroladoPor()); //ATUALIZA NO BANCO helperForHall.fieldClean(view.getPnlPesquisarPor()); //ATUALIZA A TABELA modeloTabela.setValueAt(getModeloArroladoPor(), view.getTabela().getSelectedRow(), 0); modeloTabela.setValueAt(getModeloArroladoPor(), view.getTabela().getSelectedRow(), 1); // modeloTabela.fireTableDataChanged(); JOptionPane.showMessageDialog(null, "Alteracão realizado com sucesso!", "Alteração", JOptionPane.INFORMATION_MESSAGE); } } } public void excluir() throws SQLException { String simNao[] = {"Sim", "Nao"}; int exclui = JOptionPane.showOptionDialog(null, "Confirma exclusão?", "Excluindo...", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, simNao, simNao[1]); if (exclui == 0) { if (view.getTabela().getSelectedRow() != -1) { if (dao.verificaExcluir(getModeloArroladoPor()) != true) { //NÃO EXISTE EM OUTRA TABELA PODE EXCLUIR dao.excluir(getModeloArroladoPor()); modeloTabela.removeRow(view.getTabela().getSelectedRow()); JOptionPane.showMessageDialog(null, "Exclusão realizado com sucesso!", "Exclusão", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(null, "Registro existente em outra tabela!", "Verificação ", javax.swing.JOptionPane.ERROR_MESSAGE); } } } } public void carregaTabela() throws SQLException { ArrayList lista = (ArrayList) dao.selectAll(); modeloTabela = new TableArroladoPor(lista); configuraTabela(modeloTabela); } private void configuraTabela(TableArroladoPor model) { view.getTabela().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); ListSelectionModel lsm = view.getTabela().getSelectionModel(); lsm.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { if (!e.getValueIsAdjusting()) { selecionarLinha(view.getTabela()); } } }); TableRowSorter<TableModel> sorter = new TableRowSorter<>(modeloTabela); view.getTabela().setRowSorter(sorter); view.getTabela().setModel(model); view.getTabela().getTableHeader().setReorderingAllowed(false); view.getTabela().getColumnModel().getColumn(0).setMinWidth(0); view.getTabela().getColumnModel().getColumn(0).setMaxWidth(0); } public void filtrarTabela() { TableRowSorter<TableModel> sorter = new TableRowSorter<>(modeloTabela); view.getTabela().setRowSorter(sorter); String text = view.getTxtPesquisar().getText().toUpperCase(); if (text.length() == 0) { sorter.setRowFilter(null); } else { sorter.setRowFilter(RowFilter.regexFilter(text)); } } public void selecionarLinha(JTable tabela) { if (tabela.getSelectedRow() != -1) { int lin = view.getTabela().getSelectedRow(); String descricao = (view.getTabela().getValueAt(lin, 1).toString().trim()); view.getTxtDescricao().setText(descricao); setarEstadoComponentes(3); } else { view.getTxtDescricao().setText(""); } } public void setarEstadoComponentes(int estado) { switch (estado) { //inicializa o formulario //Ao clicar excluir case 1: view.getTxtPesquisar().grabFocus(); view.getTxtPesquisar().setEnabled(true); view.getTabela().setEnabled(false); view.getTxtDescricao().setEnabled(false); view.getBtnNovo().setEnabled(true); view.getBtnSalvar().setEnabled(false); view.getBtnEditar().setEnabled(false); view.getBtnExcluir().setEnabled(false); view.getBtnSelecionar().setEnabled(false); break; //ao filtrar case 2: view.getTxtPesquisar().setEnabled(true); view.getTabela().setEnabled(true); view.getTxtDescricao().setEnabled(false); view.getBtnNovo().setEnabled(true); view.getBtnSalvar().setEnabled(false); view.getBtnEditar().setEnabled(false); view.getBtnExcluir().setEnabled(false); view.getBtnSelecionar().setEnabled(false); break; //Ao selecionar linha tabela case 3: view.getTxtPesquisar().setEnabled(true); view.getTabela().setEnabled(true); view.getTxtDescricao().setEnabled(false); view.getBtnNovo().setEnabled(false); view.getBtnSalvar().setEnabled(false); view.getBtnEditar().setEnabled(true); view.getBtnExcluir().setEnabled(true); view.getBtnSelecionar().setEnabled(false); break; //Ao clicar botão novo case 4: view.getTxtDescricao().grabFocus(); view.getTxtPesquisar().setEnabled(true); view.getTabela().setEnabled(false); view.getTxtDescricao().setEnabled(true); view.getBtnNovo().setEnabled(false); view.getBtnSalvar().setEnabled(true); view.getBtnEditar().setEnabled(false); view.getBtnExcluir().setEnabled(false); view.getBtnSelecionar().setEnabled(false); break; //Ao apertar Salvar case 5: view.getTxtDescricao().grabFocus(); view.getTxtPesquisar().setEnabled(true); view.getTabela().setEnabled(false); view.getTxtDescricao().setEnabled(true); view.getBtnNovo().setEnabled(false); view.getBtnSalvar().setEnabled(true); view.getBtnEditar().setEnabled(false); view.getBtnExcluir().setEnabled(false); view.getBtnSelecionar().setEnabled(false); break; //Ao apertar Editar case 6: view.getTxtDescricao().grabFocus(); view.getTxtPesquisar().setEnabled(true); view.getTabela().setEnabled(true); view.getTxtDescricao().setEnabled(true); view.getBtnNovo().setEnabled(false); view.getBtnSalvar().setEnabled(true); view.getBtnEditar().setEnabled(false); view.getBtnExcluir().setEnabled(false); view.getBtnSelecionar().setEnabled(false); break; default: break; } } }
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.