1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Como preencher jTable com dados de ArrayList usando AbstractTableModel

Boa Noite, Tenho um software para cadastro de Clientes, Veículos e Pátios, estes irão gerar uma Conta. Tenho todo o control feito e preciso de ajuda para preencher minhas jTables com os dados dos Arrays. O método que estou utilizando não está funcionando, irei colocar aqui apenas o código da classe Cliente, deem uma olhada por favor. Sei que existem várias perguntas a respeito do mesmo assunto, já li vários tópicos no fórum mas nenhum atende a minha necessidade, aguardo respostas.

ClienteControl

package control;

import entity.Cliente;
import java.util.ArrayList;
import java.util.Iterator;

public class ClienteControl {
    private ArrayList<Cliente> clientes;
    private int cod;

    public ClienteControl() {
        clientes = new ArrayList<>();
        cod = 0;
    }

    public void inserir(String nome, String logradouro, String numero, String bairro, String municipio, String estado, String cep, String telefone){
        try{
            Cliente c = new Cliente(cod++, nome, logradouro, numero, bairro, municipio, estado, cep, telefone);
            clientes.add(c);
        }catch(Exception e){
            System.out.println("Erro: " + e.getMessage());
        }
    }

    public boolean alterar(int codigo, String nome, String logradouro, String numero, String bairro, String municipio, String estado, String cep, String telefone){
        try{
            Cliente c;
            c = getClienteCodigo(codigo);

            if(c != null){
                c.setNome(nome);
                c.setLogradouro(logradouro);
                c.setNumero(numero);
                c.setBairro(bairro);
                c.setMunicipio(municipio);
                c.setEstado(estado);
                c.setCep(cep);
                c.setTelefone(telefone);

                return true;
            }else{
                return false;
            }
        }catch(Exception e){
            System.out.println("Erro: " + e.getMessage());
            return false;
        }
    }

    public boolean excluir(int codigo){
        try{
            Cliente c;
            c = getClienteCodigo(codigo);

            if(c != null){
                clientes.remove(c);
                return true;
            }
            else{
                return false;
            }
        }catch(Exception e){
            System.out.println("Erro: " + e.getMessage());
            return false;
        }
    }

    public Cliente getClienteCodigo(int codigo){
        Iterator i = clientes.iterator();
        Cliente c;
        do{
            c = (Cliente)i.next();
        }while((c.getCodigo() != codigo) && i.hasNext());

        if(c.getCodigo() == codigo){
            return c;
        }else{
            return null;
        }
    }

    public int tamanhoVetor(){
        return clientes.size();
    }

    public Cliente getClientePosicao(int posicao){
        return clientes.get(posicao);
    }

    public ArrayList<Cliente> getArray(){
        return clientes;
    }


}

ClienteModel

package util;

import entity.Cliente;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

public class ClienteModel extends AbstractTableModel {

    public static final int codigo = 0;
    public static final int nome = 1;
    public static final int logradouro = 2;
    public static final int numero = 3;
    public static final int bairro = 4;
    public static final int municipio = 5;
    public static final int estado = 6;
    public static final int cep = 7;
    public static final int telefone = 8;
    private ArrayList<Cliente> linhas;
    private String[] colunas = new String[]{"Codigo", "Nome", "Logradouro", "Número", "Bairro", "Município", "Estado", "CEP", "Telefone"};

    public ClienteModel() {
        linhas = new ArrayList<Cliente>();
    }

    public ClienteModel(ArrayList<Cliente> listaClientes) {
        linhas = new ArrayList<Cliente>(listaClientes);
    }

    @Override
    public int getRowCount() {
        return linhas.size();
    }

    @Override
    public int getColumnCount() {
        return colunas.length;
    }

    public String getColumnName(int column) {
        return colunas[column];
    }

    public Class<?> getColumnClass(int column) {
        switch (column) {
            case codigo:
                return String.class;
            case nome:
                return String.class;
            case logradouro:
                return String.class;
            case numero:
                return String.class;
            case bairro:
                return String.class;
            case municipio:
                return String.class;
            case estado:
                return String.class;
            case cep:
                return String.class;
            case telefone:
                return String.class;
            default:
                throw new IndexOutOfBoundsException("column out of bounds");
        }
    }

    @Override
    public Object getValueAt(int row, int column) {
        Cliente cli = linhas.get(row);
        switch (column) {
            case codigo:
                return cli.getCodigo();
            case nome:
                return cli.getNome();
            case logradouro:
                return cli.getLogradouro();
            case numero:
                return cli.getNumero();
            case bairro:
                return cli.getBairro();
            case municipio:
                return cli.getMunicipio();
            case estado:
                return cli.getEstado();
            case cep:
                return cli.getCep();
            case telefone:
                return cli.getTelefone();
            default:
                throw new IndexOutOfBoundsException("column out of bounds");
        }
    }

    public void delete(int row) {
        linhas.remove(row);
        this.fireTableRowsDeleted(row, row);
    }

    public void add(Cliente cli) {
        linhas.add(cli);
        this.fireTableRowsInserted(linhas.size() - 1, linhas.size() - 1);
    }

    public Cliente get(int row) {
        return linhas.get(row);
    }
}

JFrame onde possuo a jTable (ClientePrincipal)

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package view;

import control.ClienteControl;
import entity.Cliente;
import java.util.ArrayList;
import java.util.List;
import util.ClienteModel;

/**
 *
 * @author Max
 */
public class ClientePrincipal extends javax.swing.JFrame {

    private Cliente cli;
    private ClienteControl cc;
    private ArrayList<Cliente> todosClientes;
    private ClienteModel tb;

    public ClientePrincipal() {
        initComponents();
        preencherTabela();
        this.setLocationRelativeTo(null);
        cc = new ClienteControl();
        todosClientes = new ArrayList<>();
        tb = new ClienteModel();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        btnAdicionar = new javax.swing.JButton();
        btnAlterar = new javax.swing.JButton();
        btnExcluir = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        tbClientes = new javax.swing.JTable();
        btnVoltar = new javax.swing.JButton();
        lblClientes = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        setResizable(false);

        btnAdicionar.setText("Adicionar");
        btnAdicionar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAdicionarActionPerformed(evt);
            }
        });

        btnAlterar.setText("Alterar");
        btnAlterar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAlterarActionPerformed(evt);
            }
        });

        btnExcluir.setText("Excluir");

        tbClientes.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Código", "Nome", "Logradouro", "Número", "Bairro", "Município", "Estado", "CEP", "Telefone"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tbClientes.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        tbClientes.setSurrendersFocusOnKeystroke(true);
        jScrollPane1.setViewportView(tbClientes);

        btnVoltar.setText("Voltar");
        btnVoltar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnVoltarActionPerformed(evt);
            }
        });

        lblClientes.setIcon(new javax.swing.ImageIcon(getClass().getResource("/util/img/ClientePrincipal.png"))); // NOI18N

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1))
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(lblClientes, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
            .addGroup(layout.createSequentialGroup()
                .addGap(27, 27, 27)
                .addComponent(btnAdicionar, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(45, 45, 45)
                .addComponent(btnAlterar, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(39, 39, 39)
                .addComponent(btnExcluir, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(btnVoltar, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(33, 33, 33))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(lblClientes, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(40, 40, 40)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE, false)
                    .addComponent(btnAdicionar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnAlterar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnExcluir, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnVoltar))
                .addGap(18, 18, 18)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 506, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(35, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    private void btnVoltarActionPerformed(java.awt.event.ActionEvent evt) {                                          
        this.dispose();
        Principal p = new Principal();
        p.setVisible(true);
    }                                         

    private void btnAlterarActionPerformed(java.awt.event.ActionEvent evt) {                                           

    }                                          

    private void btnAdicionarActionPerformed(java.awt.event.ActionEvent evt) {                                             
        this.setVisible(false);
        ClienteCadastroAltera a = new ClienteCadastroAltera();
        a.setVisible(true);
    }                                            

    private void preencherTabela() {
        todosClientes = cc.getArray();
        tbClientes.setModel(new ClienteModel(todosClientes));
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton btnAdicionar;
    private javax.swing.JButton btnAlterar;
    private javax.swing.JButton btnExcluir;
    private javax.swing.JButton btnVoltar;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lblClientes;
    private javax.swing.JTable tbClientes;
    // End of variables declaration                   
}
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java swing arraylist ou faça a sua própria pergunta.