JTable não exibe

Estou com o seguinte problema:

Configurei tudo certinho, porém minha jTable não exibe nada.
O código está separado em duas partes.
Segue o código:

FrmEstado

[code]/*

  • 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 Formularios;

import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel;
import utilitarios.ConectaBanco;
import utilitarios.ModeloTabela;

/**
*

  • @author eliton
    */
    public class FrmEstado extends javax.swing.JFrame {

    ConectaBanco conecta = new ConectaBanco();

    /**

    • Creates new form FrmEstado
      */
      public FrmEstado() {
      initComponents();
      conecta.conexao();
      preencherTabela(“select * from estados order by id_estados”);
      }

    /**

    • This method is called from within the constructor to initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is always

    • regenerated by the Form Editor.
      */
      @SuppressWarnings(“unchecked”)
      //
      private void initComponents() {

      jButton6 = new javax.swing.JButton();
      jScrollPane1 = new javax.swing.JScrollPane();
      jTable1 = new javax.swing.JTable();
      jScrollPane2 = new javax.swing.JScrollPane();
      jTable2 = new javax.swing.JTable();
      jPanel1 = new javax.swing.JPanel();
      jLabel2 = new javax.swing.JLabel();
      jLabel3 = new javax.swing.JLabel();
      jLabel4 = new javax.swing.JLabel();
      jTextFieldCod = new javax.swing.JTextField();
      jTextFieldNome = new javax.swing.JTextField();
      jTextFieldSigla = new javax.swing.JTextField();
      jButtonNovo = new javax.swing.JButton();
      jButtonGravar = new javax.swing.JButton();
      jButtonEditar = new javax.swing.JButton();
      jButtonDeletar = new javax.swing.JButton();
      jButtonFechar = new javax.swing.JButton();
      jScrollPane3 = new javax.swing.JScrollPane();
      jTableEstado = new javax.swing.JTable();
      jButtonPrimeiro = new javax.swing.JButton();
      jButtonAnterior = new javax.swing.JButton();
      jButtonProximo = new javax.swing.JButton();
      jButtonUltimo = new javax.swing.JButton();
      jLabel1 = new javax.swing.JLabel();

      jButton6.setText(“jButton6”);

      jTable1.setModel(new javax.swing.table.DefaultTableModel(
      new Object [][] {
      {null, null, null, null},
      {null, null, null, null},
      {null, null, null, null},
      {null, null, null, null}
      },
      new String [] {
      “Title 1”, “Title 2”, “Title 3”, “Title 4”
      }
      ));
      jScrollPane1.setViewportView(jTable1);

      jTable2.setModel(new javax.swing.table.DefaultTableModel(
      new Object [][] {
      {null, null, null, null},
      {null, null, null, null},
      {null, null, null, null},
      {null, null, null, null}
      },
      new String [] {
      “Title 1”, “Title 2”, “Title 3”, “Title 4”
      }
      ));
      jScrollPane2.setViewportView(jTable2);

      setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
      setTitle(“Cadastro de Estado”);
      setPreferredSize(new java.awt.Dimension(650, 450));

      jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());

      jLabel2.setText(“Código”);

      jLabel3.setText(“Nome”);

      jLabel4.setText(“Sigla”);

      jTextFieldCod.setDisabledTextColor(java.awt.Color.black);
      jTextFieldCod.setEnabled(false);

      jTextFieldNome.setDisabledTextColor(java.awt.Color.black);
      jTextFieldNome.setEnabled(false);

      jTextFieldSigla.setDisabledTextColor(java.awt.Color.black);
      jTextFieldSigla.setEnabled(false);

      jButtonNovo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/Create.png"))); // NOI18N
      jButtonNovo.setToolTipText(“Novo”);
      jButtonNovo.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButtonNovoActionPerformed(evt);
      }
      });

      jButtonGravar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/Save.png"))); // NOI18N
      jButtonGravar.setToolTipText(“Gravar”);
      jButtonGravar.setEnabled(false);
      jButtonGravar.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButtonGravarActionPerformed(evt);
      }
      });

      jButtonEditar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/Modify.png"))); // NOI18N
      jButtonEditar.setToolTipText(“Alterar”);
      jButtonEditar.setEnabled(false);
      jButtonEditar.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButtonEditarActionPerformed(evt);
      }
      });

      jButtonDeletar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/Delete.png"))); // NOI18N
      jButtonDeletar.setToolTipText(“Deletar”);
      jButtonDeletar.setEnabled(false);
      jButtonDeletar.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButtonDeletarActionPerformed(evt);
      }
      });

      jButtonFechar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/Turn off.png"))); // NOI18N
      jButtonFechar.setToolTipText(“Fechar”);
      jButtonFechar.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButtonFecharActionPerformed(evt);
      }
      });

      jTableEstado.setModel(new javax.swing.table.DefaultTableModel(
      new Object [][] {
      {},
      {},
      {},
      {}
      },
      new String [] {

       }
      

      ));
      jScrollPane3.setViewportView(jTableEstado);

      jButtonPrimeiro.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/First.png"))); // NOI18N
      jButtonPrimeiro.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButtonPrimeiroActionPerformed(evt);
      }
      });

      jButtonAnterior.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/Back.png"))); // NOI18N
      jButtonAnterior.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButtonAnteriorActionPerformed(evt);
      }
      });

      jButtonProximo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/Forward.png"))); // NOI18N
      jButtonProximo.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButtonProximoActionPerformed(evt);
      }
      });

      jButtonUltimo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/Last.png"))); // NOI18N
      jButtonUltimo.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButtonUltimoActionPerformed(evt);
      }
      });

      javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
      jPanel1.setLayout(jPanel1Layout);
      jPanel1Layout.setHorizontalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addContainerGap()
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(jLabel2)
      .addComponent(jLabel3))
      .addGap(18, 18, 18)
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addComponent(jTextFieldCod, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addGap(0, 0, Short.MAX_VALUE))
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
      .addComponent(jTextFieldNome, javax.swing.GroupLayout.PREFERRED_SIZE, 300, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      .addComponent(jLabel4)
      .addGap(18, 18, 18)
      .addComponent(jTextFieldSigla, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))))
      .addComponent(jScrollPane3)
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addComponent(jButtonNovo, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(jButtonGravar, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(jButtonEditar, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(jButtonDeletar, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(jButtonPrimeiro, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(jButtonAnterior, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(jButtonProximo, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(jButtonUltimo, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      .addComponent(jButtonFechar, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE)))
      .addContainerGap())
      );
      jPanel1Layout.setVerticalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addGap(25, 25, 25)
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      .addComponent(jLabel2)
      .addComponent(jTextFieldCod, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addGap(18, 18, 18)
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      .addComponent(jLabel3)
      .addComponent(jTextFieldNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addComponent(jLabel4)
      .addComponent(jTextFieldSigla, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(jButtonEditar, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addComponent(jButtonDeletar, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addComponent(jButtonFechar, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addComponent(jButtonNovo, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addComponent(jButtonGravar, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addComponent(jButtonAnterior, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addGap(0, 0, Short.MAX_VALUE))
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
      .addGap(0, 0, Short.MAX_VALUE)
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      .addComponent(jButtonProximo, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addComponent(jButtonUltimo, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE))))
      .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addGap(334, 334, 334))
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addComponent(jButtonPrimeiro, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
      );

      jLabel1.setFont(new java.awt.Font(“Ubuntu”, 1, 18)); // NOI18N
      jLabel1.setText(“Cadastro de Estado”);

      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(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      .addComponent(jLabel1)
      .addGap(238, 238, 238))
      .addGroup(layout.createSequentialGroup()
      .addContainerGap()
      .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      .addContainerGap())
      );
      layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
      .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      .addComponent(jLabel1)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
      .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 304, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addGap(661, 661, 661))
      );

      setSize(new java.awt.Dimension(810, 630));
      setLocationRelativeTo(null);
      }//

    private void jButtonGravarActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    try {
    PreparedStatement pst = conecta.conn.prepareStatement(“insert into estados (nome_estado, sigla_estado) values (?,?)”);
    pst.setString(1, jTextFieldNome.getText());
    pst.setString(2, jTextFieldSigla.getText());
    pst.executeUpdate();
    JOptionPane.showMessageDialog(rootPane, “Gravado com sucesso!”);
    } catch (SQLException ex) {
    JOptionPane.showMessageDialog(rootPane, “Erro ao realizar gravação!\n ERRO: " + ex);
    }
    jTextFieldCod.setText(”");
    jTextFieldNome.setText("");
    jTextFieldSigla.setText("");
    jTextFieldNome.setEnabled(false);
    jTextFieldSigla.setEnabled(false);
    jButtonEditar.setEnabled(false);
    jButtonDeletar.setEnabled(false);
    jButtonGravar.setEnabled(false);
    jButtonNovo.setEnabled(true);
    }

    private void jButtonDeletarActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    //conecta.executaSQL(“delete from estados where sigla_estado =’”+jTextFieldSigla.getText()+"’");
    //JOptionPane.showMessageDialog(null, “Excluído com Sucesso!”);
    try {
    PreparedStatement pst = conecta.conn.prepareStatement(“delete from estados where sigla_estado=?”);
    pst.setString(1, jTextFieldSigla.getText());
    pst.execute();
    JOptionPane.showMessageDialog(null, “Excluído com sucesso!”);
    } catch (SQLException ex) {
    JOptionPane.showMessageDialog(null, “Erro ao excluir!” + ex);
    }
    jTextFieldCod.setText("");
    jTextFieldNome.setText("");
    jTextFieldSigla.setText("");
    jTextFieldNome.setEnabled(false);
    jTextFieldSigla.setEnabled(false);
    jButtonEditar.setEnabled(false);
    jButtonDeletar.setEnabled(false);
    jButtonGravar.setEnabled(false);
    jButtonNovo.setEnabled(true);
    }

    private void jButtonFecharActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    dispose();
    }

    private void jButtonNovoActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    jTextFieldCod.setText("");
    jTextFieldNome.setText("");
    jTextFieldSigla.setText("");
    jTextFieldNome.setEnabled(true);
    jTextFieldSigla.setEnabled(true);
    jButtonEditar.setEnabled(true);
    jButtonDeletar.setEnabled(true);
    jButtonGravar.setEnabled(true);
    jButtonNovo.setEnabled(false);
    }

    private void jButtonPrimeiroActionPerformed(java.awt.event.ActionEvent evt) {
    jButtonEditar.setEnabled(true);
    jButtonDeletar.setEnabled(true);
    jTextFieldNome.setEnabled(true);
    jTextFieldSigla.setEnabled(true);
    try {
    // TODO add your handling code here:
    conecta.executaSQL(“select * from estados”);
    conecta.rs.first();
    jTextFieldCod.setText(String.valueOf(conecta.rs.getInt(“id_estados”)));
    jTextFieldNome.setText(conecta.rs.getString(“nome_estado”));
    jTextFieldSigla.setText(conecta.rs.getString(“sigla_estado”));

     } catch (SQLException ex) {
         JOptionPane.showMessageDialog(null, "Erro ao mostrar dados!\n ERRO: " + ex);
     }
    

    }

    private void jButtonUltimoActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    jButtonEditar.setEnabled(true);
    jButtonDeletar.setEnabled(true);
    jTextFieldNome.setEnabled(true);
    jTextFieldSigla.setEnabled(true);
    try {
    // TODO add your handling code here:
    conecta.executaSQL(“select * from estados”);
    conecta.rs.last();
    jTextFieldCod.setText(String.valueOf(conecta.rs.getInt(“id_estados”)));
    jTextFieldNome.setText(conecta.rs.getString(“nome_estado”));
    jTextFieldSigla.setText(conecta.rs.getString(“sigla_estado”));

     } catch (SQLException ex) {
         JOptionPane.showMessageDialog(null, "Erro ao mostrar dados!\n ERRO: " + ex);
     }
    

    }

    private void jButtonAnteriorActionPerformed(java.awt.event.ActionEvent evt) {
    jButtonEditar.setEnabled(true);
    jButtonDeletar.setEnabled(true);
    jTextFieldNome.setEnabled(true);
    jTextFieldSigla.setEnabled(true);
    try {
    // TODO add your handling code here:
    conecta.rs.previous();
    jTextFieldCod.setText(String.valueOf(conecta.rs.getInt(“id_estados”)));
    jTextFieldNome.setText(conecta.rs.getString(“nome_estado”));
    jTextFieldSigla.setText(conecta.rs.getString(“sigla_estado”));
    } catch (SQLException ex) {
    JOptionPane.showMessageDialog(null, "Erro ao mostrar dados!\n ERRO: " + ex);
    }

    }

    private void jButtonProximoActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    jButtonEditar.setEnabled(true);
    jButtonDeletar.setEnabled(true);
    jTextFieldNome.setEnabled(true);
    jTextFieldSigla.setEnabled(true);
    try {
    // TODO add your handling code here:
    conecta.rs.next();
    jTextFieldCod.setText(String.valueOf(conecta.rs.getInt(“id_estados”)));
    jTextFieldNome.setText(conecta.rs.getString(“nome_estado”));
    jTextFieldSigla.setText(conecta.rs.getString(“sigla_estado”));
    } catch (SQLException ex) {
    JOptionPane.showMessageDialog(null, "Erro ao mostrar dados!\n ERRO: " + ex);
    }
    }

    private void jButtonEditarActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    try {
    PreparedStatement pst = conecta.conn.prepareStatement(“update estados set nome_estado= ?, sigla_estado=? where id_estados= ?”);
    pst.setString(1, jTextFieldNome.getText());
    pst.setString(2, jTextFieldSigla.getText());
    pst.setInt(3, Integer.parseInt(jTextFieldCod.getText()));
    pst.execute();
    JOptionPane.showMessageDialog(rootPane, “Editado com sucesso!”);
    } catch (SQLException ex) {
    JOptionPane.showMessageDialog(null, “Erro ao alterar!” + ex);
    }
    }

    public void preencherTabela(String SQL) {
    ArrayList dados = new ArrayList();

     String[] Colunas = new String[]{"ID", "Nome", "Sigla"};
    
     conecta.executaSQL(SQL);
     try {
         conecta.rs.first();
         do {
             dados.add(new Object[] {conecta.rs.getInt("id_estados"), conecta.rs.getString("nome_estado"), conecta.rs.getString("sigla_estado")});
    
         } while (conecta.rs.next());
     } catch (SQLException ex) {
         JOptionPane.showMessageDialog(null, "Erro ao preencher o ArrayList!" + ex);
     }
     
     ModeloTabela modelo = new ModeloTabela(dados, Colunas);
     jTableEstado.setModel(modelo);
     jTableEstado.getColumnModel().getColumn(0).setPreferredWidth(80);
     jTableEstado.getColumnModel().getColumn(0).setResizable(false);
     jTableEstado.getColumnModel().getColumn(1).setPreferredWidth(200);
     jTableEstado.getColumnModel().getColumn(1).setResizable(false);
     jTableEstado.getColumnModel().getColumn(2).setPreferredWidth(80);
     jTableEstado.getColumnModel().getColumn(2).setResizable(false);
     jTableEstado.getTableHeader().setReorderingAllowed(false);
     jTableEstado.setAutoResizeMode(jTableEstado.AUTO_RESIZE_OFF);
     jTableEstado.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    

    }

    /**

    • @param args the command line arguments
      /
      public static void main(String args[]) {
      /
      Set the Nimbus look and feel /
      //
      /
      If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

      • For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
        */
        try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
        if (“Nimbus”.equals(info.getName())) {
        javax.swing.UIManager.setLookAndFeel(info.getClassName());
        break;
        }
        }
        } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(FrmEstado.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(FrmEstado.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(FrmEstado.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(FrmEstado.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //

      /* Create and display the form */
      java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
      new FrmEstado().setVisible(true);
      }
      });
      }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton6;
    private javax.swing.JButton jButtonAnterior;
    private javax.swing.JButton jButtonDeletar;
    private javax.swing.JButton jButtonEditar;
    private javax.swing.JButton jButtonFechar;
    private javax.swing.JButton jButtonGravar;
    private javax.swing.JButton jButtonNovo;
    private javax.swing.JButton jButtonPrimeiro;
    private javax.swing.JButton jButtonProximo;
    private javax.swing.JButton jButtonUltimo;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JTable jTable1;
    private javax.swing.JTable jTable2;
    private javax.swing.JTable jTableEstado;
    private javax.swing.JTextField jTextFieldCod;
    private javax.swing.JTextField jTextFieldNome;
    private javax.swing.JTextField jTextFieldSigla;
    // End of variables declaration
    }
    [/code]

ModeloTabela

[code]/*

  • 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 utilitarios;

import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;

/**
*

  • @author eliton
    */
    public class ModeloTabela extends AbstractTableModel {

    private ArrayList linhas = null;
    private String[] colunas = null;

    public ModeloTabela(ArrayList lin, String[] col) {
    setLinhas(lin);
    setColunas(col);
    }
    public ArrayList getLinhas(){
    return linhas;
    }
    public setLinhas(ArrayList dados){
    linhas = dados;
    }
    public String[] getColunas(){
    return colunas;
    }
    public void setColunas(String[] nomes){
    colunas = nomes;
    }
    public int getColumnCount(){
    return colunas.length;
    }
    public int getRowCount(){
    return linhas.size();
    }
    public String getColumnName(int numCol){
    return colunas[numCol];
    }
    public Object getValueAT(int numLin, int numCol){
    Object[] linha = (Object[])getLinhas().get(numLin);
    return linha[numCol];
    }
    }
    [/code]

Aprenda a fazer corretamente um TableModel. Se for para fazer um que é um equivalente piorado do DefaultTableModel, aí é melhor nem fazer. No link da minha assinatura tem diversos tutoriais, alguns bem detalhados.

Boa noite

Tenho um tutorial tb do “table model” , de minha autoria:
http://solutionbto.wordpress.com/2013/11/16/criando-seu-modelo-de-tabela-abstracttablemodel/

Flw :smiley:

[quote=BTO]Boa noite

Tenho um tutorial tb do “table model” , de minha autoria:
http://solutionbto.wordpress.com/2013/11/16/criando-seu-modelo-de-tabela-abstracttablemodel/

Flw :D[/quote]

Legal, vou adicionar mais esse link aos links da minha assinatura. :slight_smile:

Bom dia

Obrigado pela honra ViniGodoy ,
elitoncampos espero que tenha ajudado, quando tiver craque no “table model” tenta usar este framework do Mark Vasconcelos :
towel project > http://markytechs.wordpress.com/towel-project/
download > https://github.com/MarkyVasconcelos/Towel/downloads

Nele contém á classe ObjectTableModel:
ObjectTableModel > http://markytechs.wordpress.com/2009/05/29/objecttablemodel/
A classe ObjectTableModel faz uso de reflection e annotations muito bom para quem quer produtividade na criação de tablemodel.

Faloww