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

abstracttablemodel como implementar

Estou fazendo um sistema desktop para melhorar os conhecimento em java. Tem a janela principal e no menu tem o cadastro de cliente, no cadastro de cliente tem uma tabela que mostra os clientes cadastrado, só que não consigo mostra os clientes cadastra do na base. Os botoes inserir, deletar e localizar fica na parte superior do frame e tabela ocupa o restante do frame. A tabela tem que retorna os campos id, nome, cpf, endereço e data_nasc.

este é o código da tabela.

package br.com.siscom.tabela;

import java.util.ArrayList;
import java.util.List;

import javax.swing.table.AbstractTableModel;
import javax.xml.crypto.Data;

import br.com.siscom.dto.PessoaDTO;

public class ClienteTabela extends AbstractTableModel{

    private static final long serialVersionUID = 1L;
    private static final int idPessoa = 0;
    private static final int nome = 1;
    private static final int cpf = 2;
    private static final int endereco = 3;
    private static final int sexo = 4;
    private static final int data_nasc = 5;

    private List<PessoaDTO> linhas;
    private String[] colunas = new String[] {"Codigo","Nome","cpf","endereco","sexo","data nascimento"};

    private PessoaDTO objPessoaDTO = new PessoaDTO();

    public ClienteTabela(){
        linhas = new ArrayList<PessoaDTO>();
    }

    public ClienteTabela(List<PessoaDTO> listaPessoa){
        linhas = new ArrayList<PessoaDTO>(listaPessoa);
    }

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

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

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

    public Class<?> getColumnClass(int columnIndex){
        switch (columnIndex) {
        case idPessoa:
            return int.class;
        case nome:
            return String.class;
        case cpf:
            return String.class;
        case endereco:
            return String.class;
        case sexo:
            return Character.class;
        case data_nasc:
            return Data.class;
        default:
            throw new IndexOutOfBoundsException("colunindex");
        }
    }

    @Override
    public Object getValueAt(int linhaIndex, int columnIndex) {
        objPessoaDTO = linhas.get(linhaIndex);
        switch (columnIndex) {
        case idPessoa:
            return objPessoaDTO.getIdPessoa();
        case nome:
            return objPessoaDTO.getNome();
        case endereco:
            return objPessoaDTO.getEndereco();
        case sexo:
            return objPessoaDTO.getSexo();
        case data_nasc:
            return objPessoaDTO.getData_nasc();
        default:
            throw new IndexOutOfBoundsException("columnindex2");
        }
    }
}

este é do frame.

package br.com.siscom.gui;

import java.awt.EventQueue;

public class CadClienteFrame extends JFrame {

    private static final long serialVersionUID = 1L;
    private JPanel contentPane;
    private JTable tblCliente;
    private ClienteTabela tableModel;
    private PessoaDTO objPessoaDTO = new PessoaDTO();
    private final String sqlListar = "select * from pessoa";

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    CadClienteFrame frame = new CadClienteFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public CadClienteFrame() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);

        JScrollPane scrollListagem = new JScrollPane();
        GroupLayout gl_contentPane = new GroupLayout(contentPane);
        gl_contentPane.setHorizontalGroup(
            gl_contentPane.createParallelGroup(Alignment.LEADING)
                .addGroup(gl_contentPane.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(scrollListagem, GroupLayout.DEFAULT_SIZE, 414, Short.MAX_VALUE))
        );
        gl_contentPane.setVerticalGroup(
            gl_contentPane.createParallelGroup(Alignment.LEADING)
                .addGroup(gl_contentPane.createSequentialGroup()
                    .addGap(50)
                    .addComponent(scrollListagem, GroupLayout.DEFAULT_SIZE, 202, Short.MAX_VALUE))
        );

        tblCliente = new JTable();
        scrollListagem.setViewportView(getTblCliente());
        contentPane.setLayout(gl_contentPane);
    }

    private JTable getTblCliente(){
        if(tblCliente == null){
            tblCliente = new JTable();
            tblCliente.setModel(getTableModel());
        }
        return tblCliente;
    }

    private ClienteTabela getTableModel(){
        if(tableModel == null){
            tableModel = new ClienteTabela(criarCliente());
        }
        return tableModel;
    }

    private List<PessoaDTO> criarCliente(){
        List<PessoaDTO> clientes = new ArrayList<PessoaDTO>();
        try {
            PreparedStatement stmt = Conexao.getInstance().getConnection().prepareStatement(sqlListar);
            ResultSet rs = stmt.executeQuery();

            while(rs.next()){
                objPessoaDTO.setIdPessoa(rs.getInt("idpessoa"));
                objPessoaDTO.setNome(rs.getString("nome"));
                objPessoaDTO.setCpf(rs.getString("cpf"));
                objPessoaDTO.setEndereco("endereço");
                objPessoaDTO.setSexo("Sexo".charAt(0));
                objPessoaDTO.setData_nasc(rs.getDate("data_nasc"));

                clientes.add(objPessoaDTO);
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        return clientes;
    }
}

a classe pessoaDAO tem os métodos inserir, deletar alterar e lista. poderia me dar uma luz! quero que a tabela retorne os dados da base da tabela pessoa.

  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!

6 respostas

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