Larback - Retornando conhecimento

Estudar que é bom nada né? Fica só lendo essas frases.

JTable - Exemplo simples do uso de JTable com mysql

Primeiro a classe para manipulação dos dados


import java.sql.*;
import javax.swing.JOptionPane;
public class ControleDAO2 {
       public Connection getConexao(){
               Connection conn = null;
               try {
                       Class.forName("com.mysql.jdbc.Driver");
               } catch(ClassNotFoundException  cl){
                       exibeErro(cl.getMessage());
               }
               try {
         conn = DriverManager.getConnection("jdbc:mysql://localhost/cadastro",
"root", "bms2shg322563");
               } catch (SQLException e) {
                       exibeErro(e.getMessage());
               }
               return conn;
       }

       public boolean novoRegistro(String nome, String email){
               Connection conn = getConexao();
               String sql = "";
               sql = "insert into pessoas (nome, email) " +
               		"values ('" + nome + "','"+email+"')";
               try {
                       Statement stm = conn.createStatement();
                       stm.executeUpdate(sql);
                       return true;
               } catch (SQLException e) {
                       exibeErro(e.getMessage());
                       return false;
               }
       }

       private void exibeErro(String msg) {
               JOptionPane.showMessageDialog(null,msg);

       }

       public ResultSet populaGrid(){
               Connection conn = getConexao();
               Statement stm;
               String sql = "select * from pessoas order by codigo";
               try {
                       stm = conn.createStatement();
                       ResultSet rs = stm.executeQuery(sql);

                       return rs;
               } catch (SQLException e) {
                       exibeErro(e.getMessage());
                       return null;
               }

       }
       
       public String getLastInsertID(){
    	    Connection conn = getConexao();
            Statement stm;
            String sql = "select codigo from pessoas order by codigo desc limit 0,1";
            try {
                    stm = conn.createStatement();
                    ResultSet rs = stm.executeQuery(sql);
                    rs.next();
                    return rs.getString("codigo");
            } catch (SQLException e) {
                    exibeErro(e.getMessage());
                    return "000F";
            }
    	   
       }
       public void excluir(String codigo){
               Connection conn = getConexao();

               try {
                       Statement stm = conn.createStatement();
               stm.executeUpdate("delete from pessoas where codigo=" + codigo);
               } catch (SQLException e) {
                       exibeErro(e.getMessage());
               }
       }


}
Agora a GUI com o JTable

import javax.swing.*; // Não faça isso só fiz por causa da preguiça
import javax.swing.table.DefaultTableModel;

import java.awt.*;
import java.awt.event.*;
import java.sql.ResultSet;
import java.sql.SQLException;

public class FormCadastro2 extends JFrame implements ActionListener,
MouseListener{
       private static final long serialVersionUID = 1L;
       
       JTextField jtNome, jtEmail;
       
       JLabel label1,label2;
       
       JButton jbInserir = new JButton("Inserir");
       
       ControleDAO2 DAO = new ControleDAO2();
       
       DefaultTableModel modelo;
       
       JTable jtable;
       // O JTable é a classe para exibir valores em grade (tipo um DBGrid pra vc
       // que usa o mouse em delphi.
       // O modelo é a referencia do JTable... o que vc fizer no modelo, o 
       // JTable copia. Então, inclua linhas, remova linhas - SEMPRE - no modelo
       ResultSet rs;
       public FormCadastro2(){
               super("Cadastro de contatos");
               jtNome = new JTextField(60);
               jtEmail = new JTextField(60);
               label1 = new JLabel("Nome");
               label2 = new JLabel("E-mail");
               label1.setLabelFor(jtNome);
               label2.setLabelFor(jtEmail);
               Container j = getContentPane();
               j.setLayout(new FlowLayout(FlowLayout.RIGHT));
               j.add(label1);
               j.add(jtNome);
               j.add(label2);
               j.add(jtEmail);
               j.add(jbInserir);
               jbInserir.addActionListener(this);
               
               modelo = new DefaultTableModel();
               
               jtable = new JTable(modelo);
               
               jtable.addMouseListener(this);
               
               modelo.addColumn("Código");
               modelo.addColumn("Nome");
               modelo.addColumn("E-mail");
               
               jtable.getColumnModel().getColumn(0).setPreferredWidth(30);

               rs = DAO.populaGrid();
               try {
                       while (rs.next()){
                               modelo.addRow(new Object[] {String.valueOf(rs.getInt("codigo")),
rs.getString("nome"),rs.getString("email")});
                       }
               } catch (SQLException e) {
                       System.out.println(e.getMessage());
               }

               JScrollPane scroll = new JScrollPane(jtable);
               JPanel p1 = new JPanel();
               p1.setLayout(null);
               p1.setPreferredSize(new Dimension(720,100));
               p1.add(scroll);
               
               scroll.setBounds(5,0,710,100);

               j.add(p1);

       }
       public static void main(String args[]){
               FormCadastro2 app = new FormCadastro2();
               app.setDefaultCloseOperation(EXIT_ON_CLOSE);
               app.setSize(730,220);
               app.setLocationRelativeTo(null);
               app.setVisible(true);
       }

       public void actionPerformed(ActionEvent e){
    	   
               if (e.getSource()==jbInserir){
                       if (DAO.novoRegistro(jtNome.getText(), jtEmail.getText()))
                JOptionPane.showMessageDialog(null,"Registro Incluido");
modelo.addRow(new Object[] { DAO.getLastInsertID(),jtNome.getText(),jtEmail.getText()});
               }
       }

       public void mouseClicked(MouseEvent e) {	       	
               Object[] options = { "Sim", "Não" };
               	int i = JOptionPane.showOptionDialog(null,
               			"Deseja realmente excluir este registro?\n" +

String.valueOf(jtable.getValueAt(jtable.getSelectedRow(),0)) + " - " +
               String.valueOf(jtable.getValueAt(jtable.getSelectedRow(),1))
               , "Exclusão de registro",
               JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null,
               options, options[1]);
       if (i == JOptionPane.YES_OPTION) {
               DAO.excluir
(String.valueOf(jtable.getValueAt(jtable.getSelectedRow(),0)));
               modelo.removeRow(jtable.getSelectedRow());
       }
       }
       
       public void mouseEntered(MouseEvent arg0) {
               System.out.println("Mouse Entra");

       }
       public void mouseExited(MouseEvent arg0) {
               // TODO Auto-generated method stub
    	   System.out.println("Mouse Sai");
       }
       public void mousePressed(MouseEvent arg0) {
               // TODO Auto-generated method stub
    	   System.out.println("Mouse Aperta");

       }
       public void mouseReleased(MouseEvent arg0) {
               // TODO Auto-generated method stub
    	   System.out.println("Mouse SOLTA");
       }
}