Olá pessoal,
Tudo bem com vocês?
Sou iniciante em java e estou com utilizando uma classe chamada Cliente com Swing e Banco de dados. No meu código eu tenho uma Jtable, o problema é o seguinte… Eu gostaria de toda vez que eu rodasse o programa ele já iniciasse com a Jtable populada com os dados do banco, pois, atualmente ela inicia vazia, somente quando eu insiro algum dado que aparecem os dados do banco. O problema maior é que toda vez que eu clico no botão inserir ele pega os dados do banco e salva na Jtable, mas se eu insiro novamente outro cliente ele joga na Jtable os mesmos dados novamente, ou seja, duplicando os dados com o select do banco. Eu tentei achar algum comando que limpasse todos os dados da minha Jtable antes do select mas mesmo assim não funcionou. Se puderem me dar um help, pois estou com muita dificuldade. Meu código é o seguinte:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Window.Type;
import java.awt.FlowLayout;
import java.awt.FontMetrics;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JList;
import javax.swing.JButton;
import javax.swing.JComboBox;
import com.toedter.calendar.JCalendar;
import com.toedter.calendar.JDateChooser;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.awt.event.ActionEvent;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.border.BevelBorder;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JCheckBox;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.JScrollBar;
import javax.swing.JSeparator;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JScrollPane;
import javax.swing.LayoutStyle.ComponentPlacement;
import java.awt.Component;
import java.awt.Container;
import javax.swing.Box;
import java.awt.Color;
public class MenuCliente extends JFrame {
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DATABASE_URL = "jdbc:mysql://localhost/oficinamecanica";
private JPanel contentPane;
private JTextField txtEndcomp;
private JTextField txtNome;
private JTextField txtCpf;
private JTextField txtEmail;
private JTextField txtTel;
private JTable tabela;
private JTextField txtCodigo;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MenuCliente frame = new MenuCliente();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public MenuCliente() {
setTitle("Menu Cliente");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 1282, 710);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(null);
setContentPane(contentPane);
JLabel lblNome = new JLabel("Nome:");
lblNome.setBounds(31, 30, 46, 14); // eixos (x,y,w,h) Seta posicao e tamanho
txtNome = new JTextField();
txtNome.setBounds(74, 27, 171, 20);
txtNome.setColumns(10);
JLabel lblCpf = new JLabel("CPF:");
lblCpf.setBounds(276, 30, 46, 14);
txtCpf = new JTextField();
txtCpf.setBounds(313, 27, 177, 20);
txtCpf.setColumns(10);
JLabel lblTelefone = new JLabel("Telefone:");
lblTelefone.setBounds(31, 162, 65, 14);
txtTel = new JTextField();
txtTel.setBounds(94, 159, 144, 20);
txtTel.setColumns(10);
JLabel lblEmail = new JLabel("E-mail:");
lblEmail.setBounds(222, 118, 46, 14);
txtEmail = new JTextField();
txtEmail.setBounds(276, 115, 139, 20);
txtEmail.setColumns(10);
JLabel lblEndereoCompleto = new JLabel("Endereco Completo:");
lblEndereoCompleto.setBounds(31, 74, 120, 14);
txtEndcomp = new JTextField();
txtEndcomp.setBounds(154, 71, 355, 20);
txtEndcomp.setColumns(10);
JLabel lblDataDeNascimento = new JLabel("Data de Nascimento:");
lblDataDeNascimento.setBounds(430, 118, 120, 14);
JDateChooser dateChooser_data = new JDateChooser();
dateChooser_data.setBounds(565, 115, 137, 20);
JLabel lblSexo = new JLabel("Sexo:");
lblSexo.setBounds(521, 30, 46, 14);
JComboBox comboBox_sexo = new JComboBox();
comboBox_sexo.setBounds(565, 27, 137, 20);
comboBox_sexo.setModel(new DefaultComboBoxModel(new String[] { "Masculino", "Feminino" }));
JLabel lblEstadoCivil = new JLabel("Estado Civil:");
lblEstadoCivil.setBounds(31, 118, 86, 14);
JComboBox comboBox_estcivil = new JComboBox();
comboBox_estcivil.setBounds(107, 115, 95, 20);
comboBox_estcivil.setModel(
new DefaultComboBoxModel(new String[] { "Casado", "Solteiro", "Viuvo", "Separado", "Divorciado" }));
JLabel lblSituao = new JLabel("Situacao:");
lblSituao.setBounds(531, 74, 58, 14);
JComboBox comboBox_Situacao = new JComboBox();
comboBox_Situacao.setBounds(599, 71, 103, 20);
comboBox_Situacao.setModel(new DefaultComboBoxModel(new String[] { "Ativo", "Inativo" }));
JSeparator separator = new JSeparator();
separator.setForeground(Color.BLACK);
separator.setBounds(20, 205, 678, 2);
contentPane.add(separator);
JLabel lblCodigo = new JLabel("Codigo:");
lblCodigo.setBounds(325, 162, 46, 14);
txtCodigo = new JTextField();
txtCodigo.setBounds(381, 159, 86, 20);
txtCodigo.setColumns(10);
txtCodigo.setEnabled(false); // desabilita campo codigo
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(32, 284, 1141, 218);
tabela = new JTable();
tabela.setModel(new DefaultTableModel(new Object[2][11],new String[] {"Codigo", "CPF", "Nome", "Telefone", "E-mail", "Endereco Completo", "Data de Nascimento", "Sexo", "Estavo Civil", "Situacao", "Data de Cadastro"}));
tabela.getColumnModel().getColumn(5).setPreferredWidth(116);
scrollPane.setViewportView(tabela);
JButton btnIncluir = new JButton("Incluir");
btnIncluir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String cod = null;
String nome = txtNome.getText().trim(); // trim() pega só o que esta escrito no campo
String cpf = txtCpf.getText().trim();
String telefone = txtTel.getText().trim();
String data_nasc = new SimpleDateFormat("dd/MM/yyyy").format(dateChooser_data.getDate());
String email = txtEmail.getText().trim();
String end_comp = txtEndcomp.getText().trim();
String sexo = null;
if (comboBox_sexo.getSelectedItem().equals("Masculino"))
sexo = "Masculino";
else if (comboBox_sexo.getSelectedItem().equals("Feminino"))
sexo = "Feminino";
String est_civil = null;
if (comboBox_estcivil.getSelectedItem().equals("Casado"))
est_civil = "Casado";
else if (comboBox_estcivil.getSelectedItem().equals("Solteiro"))
est_civil = "Solteiro";
else if (comboBox_estcivil.getSelectedItem().equals("Viuvo"))
est_civil = "Viuvo";
else if (comboBox_estcivil.getSelectedItem().equals("Separado"))
est_civil = "Separado";
else if (comboBox_estcivil.getSelectedItem().equals("Divorciado"))
est_civil = "Divorciado";
String situacao = null;
if (comboBox_Situacao.getSelectedItem().equals("Ativo"))
situacao = "Ativo";
else if (comboBox_Situacao.getSelectedItem().equals("Inativo"))
situacao = "Inativo";
Connection connection = null; // gerencia a conexao
Statement statement = null; // instrucao de consulta
try {
Class.forName(JDBC_DRIVER);
connection = DriverManager.getConnection(DATABASE_URL, "root", "");
statement = connection.createStatement();
statement.execute("INSERT INTO `tab_cliente`(`cpf`,`nome`,`telefone`,`email`,`endereco`,`data`,`sexo`,`estado`,`situacao`) VALUES ('"
+ cpf
+ "','"
+ nome
+ "','"
+ telefone
+ "','"
+ email
+ "','"
+ end_comp
+ "','"
+ data_nasc
+ "','"
+ sexo
+ "','"
+ est_civil
+ "','"
+ situacao + "')");
String[] tableColumnsName = {"Codigo", "CPF", "Nome", "Telefone", "E-mail", "Endereco Completo", "Data de Nascimento", "Sexo", "Estavo Civil", "Situacao", "Data de Cadastro"};
DefaultTableModel val = (DefaultTableModel) tabela.getModel();
val.setColumnIdentifiers(tableColumnsName); // query
ResultSet rs = statement.executeQuery("Select * from tab_cliente"); // Loop com o ResultSet transferindo os dados para o modelo
java.sql.ResultSetMetaData rsmd = rs.getMetaData();
int colNo = rsmd.getColumnCount();
while(rs.next()){
Object[] objects = new Object[colNo];
for(int i = 0; i < colNo; i++) {
objects[i] = rs.getObject(i+1);
}
val.addRow(objects);
}
tabela.setModel(val);
} // fim do try
catch (SQLException sqlException) {
sqlException.printStackTrace();
System.exit(1);
} // fim do catch
catch (ClassNotFoundException classNotFound) {
classNotFound.printStackTrace();
System.exit(1);
} // fim do catch
finally // assegura que a instrucao e conexao sao fechadas adequadamente
{
try {
statement.close();
connection.close();
} // fim do try
catch (Exception exception) {
exception.printStackTrace();
System.exit(1);
} // fim do catch
} // fim do finally
txtNome.setText(""); //limpa os campos
txtCpf.setText("");
txtTel.setText("");
dateChooser_data.getDateEditor().setDate(null);
txtEmail.setText("");
txtEndcomp.setText("");
comboBox_sexo.getEditor().setItem("");
comboBox_estcivil.getEditor().setItem("");
comboBox_Situacao.getEditor().setItem("");
txtNome.requestFocus(); // Após o cadastro foca no campo nome
}
});
btnIncluir.setBounds(45, 238, 89, 23);
JButton btnVoltar = new JButton("Voltar");
btnVoltar.setBounds(581, 238, 89, 23);
btnVoltar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
MenuPrincipal menu = new MenuPrincipal();
dispose(); // fecha a primeira tela
menu.setVisible(true); // chama a segunda tela
}
});
JButton btnExcluir = new JButton("Excluir");
btnExcluir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String cod = tabela.getValueAt(tabela.getSelectedRow(), 0).toString();
((DefaultTableModel) tabela.getModel()).removeRow(tabela.getSelectedRow());
Connection connection = null;
Statement statement = null;
try {
Class.forName(JDBC_DRIVER); // carrega classe de driver do banco de
// dados
// estabelece conexão com o banco de dados
connection = DriverManager.getConnection(DATABASE_URL, "root", "");
// cria Statement para consultar banco de dados
statement = connection.createStatement();
statement.execute("DELETE FROM tab_cliente WHERE cod=('" + cod + "');");
String[] tableColumnsName = {"Codigo", "CPF", "Nome", "Telefone", "E-mail", "Endereco Completo", "Data de Nascimento", "Sexo", "Estavo Civil", "Situacao", "Data de Cadastro"};
DefaultTableModel val = (DefaultTableModel) tabela.getModel();
val.setColumnIdentifiers(tableColumnsName); // query
ResultSet rs = statement.executeQuery("Select * from tab_cliente"); // Loop com o ResultSet transferindo os dados para o modelo
java.sql.ResultSetMetaData rsmd = rs.getMetaData();
int colNo = rsmd.getColumnCount();
while(rs.next()){
Object[] objects = new Object[colNo];
for(int i = 0; i < colNo; i++) {
objects[i] = rs.getObject(i+1);
}
val.addRow(objects);
}
tabela.setModel(val);
} // fim do try
catch (SQLException sqlException) {
sqlException.printStackTrace();
System.exit(1);
} // fim do catch
catch (ClassNotFoundException classNotFound) {
classNotFound.printStackTrace();
System.exit(1);
} // fim do catch
finally // assegura que a instrução e conexão são fechadas adequadamente
{
try {
statement.close();
connection.close();
} // fim do try
catch (Exception exception) {
exception.printStackTrace();
System.exit(1);
} // fim do catch
} // fim do finally
JOptionPane.showMessageDialog(null,"Excluido com sucesso!");
}
});
btnExcluir.setBounds(313, 238, 89, 23);
JButton btnAlterar = new JButton("Alterar");
btnAlterar.setBounds(179, 238, 89, 23);
JButton btnConsultar = new JButton("Consultar");
btnConsultar.setBounds(447, 238, 89, 23);
contentPane.add(txtNome);
contentPane.add(lblNome); // Adicionar o componente de texto ao painel
contentPane.add(lblCpf);
contentPane.add(txtCpf);
contentPane.add(comboBox_sexo);
contentPane.add(lblSexo);
contentPane.add(lblEndereoCompleto);
contentPane.add(txtEndcomp);
contentPane.add(lblSituao);
contentPane.add(comboBox_Situacao);
contentPane.add(lblEstadoCivil);
contentPane.add(comboBox_estcivil);
contentPane.add(lblEmail);
contentPane.add(txtEmail);
contentPane.add(lblDataDeNascimento);
contentPane.add(dateChooser_data);
contentPane.add(lblTelefone);
contentPane.add(txtTel);
contentPane.add(btnIncluir);
contentPane.add(btnAlterar);
contentPane.add(btnExcluir);
contentPane.add(btnConsultar);
contentPane.add(btnVoltar);
contentPane.add(scrollPane);
contentPane.add(txtCodigo);
contentPane.add(lblCodigo);
}
}