Oi pessoal, estou fazendo uma busca no banco de dados para atualizar um jtable :
isso no botão de pesquisa.
o que não acontece é a atualização do jtable. eu já fiz um debug e ele faz a pesquisa no banco com like e tudo mas não traz a tabela atualizada.
Desculpe mas o código é grandinho, ainda não sei se tem problemas com isso.
veja abaixo.:
package View;
import Dao.ClienteDao;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.List;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import modelo.Cliente;
public class CadastroDeClientes extends JFrame implements ActionListener {
private ClienteDao cd = new ClienteDao();
private String estadoBtn = "ENTROU";
private String estadoTB = "INICIAL";
private String txtNomeAux;
private JPanel jpCadastro, jpApresenta, jpButton, jpPesquisa;
private JButton btnInserir, btnEditar, btnExcluir, btnConsultar, btnSalvar, btnCancelar, btnSair, btnPesquisa;
private JLabel lblCodigo, lblNome, lblCpfCnpj, lblRgIe, lblEndereco, lblBairro,
lblNumero, lblComplemento, lblCep, lblCidade, lblEstado,
lblTelefone, lblCelular, lblEmail, lblSexo, lblContato, lblObs, lblPesquisa;
private JTextField txtCodigo, txtNome, txtEndereco, txtBairro, txtCpfCnpj,
txtRgIe, txtCidade, txtNumero, txtComplemento, txtCep,
txtTelefone, txtCelular, txtContato, txtEmail, txtSexo, txtEstado, txtPesquisa;
private JTextArea txtObs;
private JTable tabela;
private DefaultTableModel modelo;
private JSeparator separador = new JSeparator(JSeparator.HORIZONTAL);
//aqui tem o construtor toda vez que se inicializa o programa ele inicializa
public CadastroDeClientes() {
super("Cadastro de Clientes");
//código abaixo deixa a tela centralizada.
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds(
(screenSize.width - 700) / 2, (screenSize.height - 650) / 2, 700, 650);
setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
this.setLayout(null);
PainelCadastro();
PainelApresentacao();
PainelPesquisa();
PainelBotao();
controlaBotao();
}
public void PainelCadastro() {
//aqui instancia os paineis
jpCadastro = new JPanel();
jpCadastro.setBorder(BorderFactory.createTitledBorder("Cadastro de Clientes"));
jpCadastro.setSize(675, 280);
jpCadastro.setLocation(5, 0);
jpCadastro.setLayout(null);
//aqui vamos colocar os label´s e os textfield´s
lblCodigo = new JLabel("Codigo: ");
lblCodigo.setSize(100, 21);
lblCodigo.setLocation(400, 140);
txtCodigo = new JTextField();
txtCodigo.setSize(20, 21);
txtCodigo.setLocation(400, 160);
lblNome = new JLabel("Nome: ");
lblNome.setSize(100, 21);
lblNome.setLocation(10, 20);
txtNome = new JTextField();
txtNome.setSize(400, 21);
txtNome.setLocation(10, 40);
lblCpfCnpj = new JLabel("Cpf/Cnpj: ");
lblCpfCnpj.setSize(100, 21);
lblCpfCnpj.setLocation(415, 20);
txtCpfCnpj = new JTextField();
txtCpfCnpj.setSize(115, 21);
txtCpfCnpj.setLocation(415, 40);
lblRgIe = new JLabel("Rg/Ie: ");
lblRgIe.setSize(100, 21);
lblRgIe.setLocation(550, 20);
txtRgIe = new JTextField();
txtRgIe.setSize(115, 21);
txtRgIe.setLocation(550, 40);
lblEndereco = new JLabel("Endereço: ");
lblEndereco.setSize(100, 21);
lblEndereco.setLocation(10, 60);
txtEndereco = new JTextField();
txtEndereco.setSize(250, 21);
txtEndereco.setLocation(10, 80);
lblNumero = new JLabel("Numero: ");
lblNumero.setSize(100, 21);
lblNumero.setLocation(265, 60);
txtNumero = new JTextField();
txtNumero.setSize(50, 21);
txtNumero.setLocation(265, 80);
lblBairro = new JLabel("Bairro: ");
lblBairro.setSize(100, 21);
lblBairro.setLocation(320, 60);
txtBairro = new JTextField();
txtBairro.setSize(145, 21);
txtBairro.setLocation(320, 80);
lblComplemento = new JLabel("Complemento: ");
lblComplemento.setSize(100, 21);
lblComplemento.setLocation(470, 60);
txtComplemento = new JTextField();
txtComplemento.setSize(120, 21);
txtComplemento.setLocation(470, 80);
lblCep = new JLabel("Cep: ");
lblCep.setSize(100, 21);
lblCep.setLocation(595, 60);
txtCep = new JTextField();
txtCep.setSize(70, 21);
txtCep.setLocation(595, 80);
lblCidade = new JLabel("Cidade: ");
lblCidade.setSize(100, 21);
lblCidade.setLocation(10, 100);
txtCidade = new JTextField();
txtCidade.setSize(400, 21);
txtCidade.setLocation(10, 120);
lblEstado = new JLabel("Estado: ");
lblEstado.setSize(100, 20);
lblEstado.setLocation(415, 100);
txtEstado = new JTextField();
txtEstado.setSize(50, 20);
txtEstado.setLocation(415, 120);
lblEmail = new JLabel("Email: ");
lblEmail.setSize(100, 21);
lblEmail.setLocation(470, 100);
txtEmail = new JTextField();
txtEmail.setSize(195, 21);
txtEmail.setLocation(470, 120);
lblTelefone = new JLabel("Telefone: ");
lblTelefone.setSize(100, 21);
lblTelefone.setLocation(10, 140);
txtTelefone = new JTextField();
txtTelefone.setSize(100, 21);
txtTelefone.setLocation(10, 160);
lblCelular = new JLabel("Celular");
lblCelular.setSize(100, 20);
lblCelular.setLocation(115, 140);
txtCelular = new JTextField();
txtCelular.setSize(100, 20);
txtCelular.setLocation(115, 160);
lblSexo = new JLabel("Sexo: ");
lblSexo.setSize(100, 20);
lblSexo.setLocation(220, 140);
txtSexo = new JTextField();
txtSexo.setSize(50, 20);
txtSexo.setLocation(220, 160);
lblContato = new JLabel("Contato");
lblContato.setSize(100, 20);
lblContato.setLocation(280, 140);
txtContato = new JTextField();
txtContato.setSize(100, 20);
txtContato.setLocation(280, 160);
lblObs = new JLabel("Obs: ");
lblObs.setSize(100, 20);
lblObs.setLocation(10, 180);
txtObs = new JTextArea();
txtObs.setColumns(20);
txtObs.setRows(10);
txtObs.setSize(650, 50);
txtObs.setLocation(10, 200);
//aqui colocamos os lb´s e txt´s no painel.
jpCadastro.add(lblNome);
jpCadastro.add(txtNome);
jpCadastro.add(lblEndereco);
jpCadastro.add(txtEndereco);
jpCadastro.add(lblNumero);
jpCadastro.add(txtNumero);
jpCadastro.add(lblBairro);
jpCadastro.add(txtBairro);
jpCadastro.add(lblComplemento);
jpCadastro.add(txtComplemento);
jpCadastro.add(lblCep);
jpCadastro.add(txtCep);
jpCadastro.add(lblCpfCnpj);
jpCadastro.add(txtCpfCnpj);
jpCadastro.add(lblRgIe);
jpCadastro.add(txtRgIe);
jpCadastro.add(lblCidade);
jpCadastro.add(txtCidade);
jpCadastro.add(lblEstado);
jpCadastro.add(txtEstado);
jpCadastro.add(lblEmail);
jpCadastro.add(txtEmail);
jpCadastro.add(lblTelefone);
jpCadastro.add(txtTelefone);
jpCadastro.add(lblCelular);
jpCadastro.add(txtCelular);
jpCadastro.add(lblSexo);
jpCadastro.add(txtSexo);
jpCadastro.add(lblContato);
jpCadastro.add(txtContato);
jpCadastro.add(lblCodigo);
jpCadastro.add(txtCodigo);
jpCadastro.add(lblObs);
jpCadastro.add(txtObs);
this.add(jpCadastro);
}
public void PainelApresentacao() {
//aqui instancia o painel de dados do cliente
jpApresenta = new JPanel();
jpApresenta.setBorder(BorderFactory.createTitledBorder("Dados de Clientes"));
jpApresenta.setSize(675, 230);
jpApresenta.setLocation(5, 340);
this.jpApresenta.setLayout(new GridLayout(1, 1, 0, 0));
this.add(jpApresenta);
criaJtable();
}
public void PainelPesquisa() {
//aqui instancia o painel de pesquisa do nome do cliente
jpPesquisa = new JPanel();
jpPesquisa.setBorder(BorderFactory.createTitledBorder("Pesquisa Clientes pelo nome: "));
jpPesquisa.setSize(675, 45);
jpPesquisa.setLocation(5, 290);
this.jpPesquisa.setLayout(new GridLayout(1, 1, 0, 0));
this.add(jpPesquisa);
lblPesquisa = new JLabel("Digite Nome: ");
lblPesquisa.setSize(100, 20);
lblPesquisa.setLocation(10, 20);
txtPesquisa = new JTextField();
txtPesquisa.setSize(400, 21);
txtPesquisa.setLocation(90, 20);
ImageIcon pesquisar = new javax.swing.ImageIcon(getClass().getResource("/images/Pesquisar_24x24.png"));
btnPesquisa = new JButton("Pesquisar", pesquisar);
btnPesquisa.addActionListener(this);
jpPesquisa.add(lblPesquisa);
jpPesquisa.add(txtPesquisa);
jpPesquisa.add(btnPesquisa);
}
private void criaJtable() {
ClienteDao cli = new ClienteDao();
modelo = new DefaultTableModel();
tabela = new JTable(modelo) {
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
limpaTabela(tabela, modelo);
tabela.getModel();
// modelo.setNumRows(0);
// modelo.setColumnCount(0);
//adicionando colunas na tabela
modelo.addColumn("Codigo");
modelo.addColumn("Nome do Clientes");
modelo.addColumn("Telefone");
modelo.addColumn("Celular");
//dimensionando o tamanho das colunas na tabela
tabela.getColumnModel().getColumn(0).setPreferredWidth(5);
tabela.getColumnModel().getColumn(1).setPreferredWidth(100);
tabela.getColumnModel().getColumn(2).setPreferredWidth(50);
tabela.getColumnModel().getColumn(3).setPreferredWidth(50);
System.out.println("o estado da tabela é" + estadoTB);
if (estadoTB.equals("INICIAL")) {
estadoTB = "PESQUISA";
List clientes = cli.buscarTodos();
for (Object c : clientes) {
Cliente cl = (Cliente) c;
modelo.addRow(new Object[]{cl.getId(), cl.getNome(), cl.getTelefone(), cl.getCelular()});
}
} else {
estadoTB = "INICIAL";
List clienteslk = cli.pesquisaLike(txtPesquisa.getText().toUpperCase());
for (Object c : clienteslk) {
Cliente cl = (Cliente) c;
modelo.addRow(new Object[]{cl.getId(), cl.getNome(), cl.getTelefone(), cl.getCelular()});
}
}
tabela.setVisible(true);
//manipulando o cabeçalho da planilha
JTableHeader header = tabela.getTableHeader();
header.setBackground(Color.ORANGE);
JScrollPane pane = new JScrollPane(tabela);
jpApresenta.add(pane);
this.add(jpApresenta);
tabela.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int cod = 0;
cod = (Integer) modelo.getValueAt(tabela.getSelectedRow(), 0);
ClienteDao cd = new ClienteDao();
cd.getCliente(cod);
txtNome.setText(cd.getCliente(cod).getNome());
txtCpfCnpj.setText(cd.getCliente(cod).getCpfcnpj());
txtRgIe.setText(cd.getCliente(cod).getRgie());
txtEndereco.setText(cd.getCliente(cod).getEndereco());
txtNumero.setText(cd.getCliente(cod).getNumero());
txtBairro.setText(cd.getCliente(cod).getBairro());
txtComplemento.setText(cd.getCliente(cod).getComplemento());
txtCep.setText(cd.getCliente(cod).getCep());
txtCidade.setText(cd.getCliente(cod).getCidade());
txtEstado.setText(cd.getCliente(cod).getEstado());
txtEmail.setText(cd.getCliente(cod).getEmail());
txtTelefone.setText(cd.getCliente(cod).getTelefone());
txtCelular.setText(cd.getCliente(cod).getCelular());
txtSexo.setText(cd.getCliente(cod).getSexo());
txtContato.setText(cd.getCliente(cod).getContato());
txtObs.setText(cd.getCliente(cod).getObs());
}
});
}
public void PainelBotao() {
ImageIcon inserir = new javax.swing.ImageIcon(getClass().getResource("/images/Incluir_24x24.png"));
ImageIcon salvar = new javax.swing.ImageIcon(getClass().getResource("/images/Salvar_24x24.png"));
ImageIcon excluir = new javax.swing.ImageIcon(getClass().getResource("/images/Excluir_24x24.png"));
ImageIcon cancelar = new javax.swing.ImageIcon(getClass().getResource("/images/Cancelar_24x24.png"));
ImageIcon sair = new javax.swing.ImageIcon(getClass().getResource("/images/Sair_24x24.png"));
jpButton = new JPanel();
jpButton.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jpButton.setSize(670, 35);
jpButton.setLocation(7, 575);
this.jpButton.setLayout(new GridLayout(1, 1, 0, 0));
btnInserir = new JButton("Inserir", inserir);
btnSalvar = new JButton("Salvar", salvar);
btnExcluir = new JButton("Excluir", excluir);
btnCancelar = new JButton("Cancelar", cancelar);
btnSair = new JButton("Sair", sair);
btnInserir.addActionListener(this);
btnSalvar.addActionListener(this);
btnExcluir.addActionListener(this);
btnCancelar.addActionListener(this);
btnSair.addActionListener(this);
jpButton.add(btnInserir);
jpButton.add(btnSalvar);
jpButton.add(btnExcluir);
jpButton.add(btnCancelar);
jpButton.add(btnSair);
this.add(jpButton);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnInserir) {
estadoBtn = "INSERIR";
if (txtNome.getText().trim().equals("")) {
JOptionPane.showMessageDialog(null, "O Campo nome do Cliente está vazio!!!");
} else {
Cliente cli = new Cliente();
cli.setNome(txtNome.getText().toUpperCase());
cli.setCpfcnpj(txtCpfCnpj.getText().toUpperCase());
cli.setRgie(txtRgIe.getText().toUpperCase());
cli.setEndereco(txtEndereco.getText().toUpperCase());
cli.setNumero(txtNumero.getText().toUpperCase());
cli.setBairro(txtBairro.getText().toUpperCase());
cli.setComplemento(txtComplemento.getText().toUpperCase());
cli.setCep(txtCep.getText().toUpperCase());
cli.setCidade(txtCidade.getText().toUpperCase());
cli.setEstado(txtEstado.getText().toUpperCase());
cli.setEmail(txtEmail.getText().toLowerCase());
cli.setTelefone(txtTelefone.getText().toUpperCase());
cli.setCelular(txtCelular.getText().toUpperCase());
cli.setSexo(txtSexo.getText().toUpperCase());
cli.setContato(txtContato.getText().toUpperCase());
cli.setObs(txtObs.getText().toUpperCase());
ClienteDao cd = new ClienteDao();
cd.salvarCliente(cli);
estadoBtn = "SALVAR";
controlaBotao();
limpaDados();
modelo.addRow(new Object[]{cli.getId(), cli.getNome(), cli.getTelefone()});
}
} else if (e.getSource() == btnExcluir) {
int resp = JOptionPane.showConfirmDialog(null, "Deseja Realmente Excluir o registro ?", "Atencão!", JOptionPane.YES_NO_OPTION);
if (resp == JOptionPane.YES_OPTION) {
int cod = (Integer) modelo.getValueAt(tabela.getSelectedRow(), 0);
cd.excluir(cod);
((DefaultTableModel) tabela.getModel()).removeRow(tabela.getSelectedRow());
limpaDados();
System.out.println("excluir!");
} else {
System.out.println("não excluiu!");
}
estadoBtn = "EXCLUIR";
controlaBotao();
} else if (e.getSource() == btnCancelar) {
estadoBtn = "CANCELAR";
controlaBotao();
} else if (e.getSource() == btnSair) {
this.dispose();
estadoBtn = "SAIR";
controlaBotao();
} else if (e.getSource() == btnPesquisa) {
if (txtPesquisa.getText().trim().equals("")) {
criaJtable();
} else {
JOptionPane.showMessageDialog(null, "Estou passando por aqui.........");
estadoTB = "PESQUISA";
criaJtable();
}
}
}
public void limpaDados() {
txtNome.setText("");
txtNome.requestFocus();
txtBairro.setText("");
txtCelular.setText("");
txtCep.setText("");
txtCidade.setText("");
txtComplemento.setText("");
txtContato.setText("");
txtCpfCnpj.setText("");
txtEmail.setText("");
txtEndereco.setText("");
txtNumero.setText("");
txtObs.setText("");
txtRgIe.setText("");
txtTelefone.setText("");
txtSexo.setText("");
txtEstado.setText("");
}
public void limpaTabela(JTable tabela, DefaultTableModel modelo) {
while (tabela.getRowCount() > 0) {
modelo.removeRow(0);
}
}
public void controlaBotao() {
if (estadoBtn.equals("INSERIR")) {
btnExcluir.setEnabled(false);
btnSair.setEnabled(false);
btnInserir.setEnabled(false);
btnSalvar.setEnabled(true);
btnCancelar.setEnabled(true);
} else if (estadoBtn.equals("EXCLUIR")) {
btnExcluir.setEnabled(true);
btnSair.setEnabled(true);
btnInserir.setEnabled(false);
btnSalvar.setEnabled(false);
btnCancelar.setEnabled(true);
} else if (estadoBtn.equals("CANCELAR")) {
btnExcluir.setEnabled(true);
btnSair.setEnabled(true);
btnInserir.setEnabled(true);
btnSalvar.setEnabled(true);
btnCancelar.setEnabled(false);
} else if (estadoBtn.equals("SALVAR")) {
btnExcluir.setEnabled(true);
btnSair.setEnabled(true);
btnInserir.setEnabled(true);
btnSalvar.setEnabled(false);
btnCancelar.setEnabled(false);
} else if (estadoBtn.equals("ENTROU")) {
btnExcluir.setEnabled(true);
btnSair.setEnabled(true);
btnInserir.setEnabled(true);
btnSalvar.setEnabled(false);
btnCancelar.setEnabled(false);
}
}
public static void main(String[] args) {
CadastroDeClientes cc = new CadastroDeClientes();
cc.setVisible(true);
}
}