Listar dados de uma tabela MySQL em uma JTable

Pessoal, eu encontrei esse codigo de como listar os dados da minha tabela MySql em uma JTable… o codigo está MUITO antigo e sem boas praticas, gostaria de não usar o System Out Println mas não sei como fazer isso… e outra… quando eu rodo esse codigo só aparece o primeiro cadastro que tem no Banco de Dados… não aparece os demais… Tem como vcs me ajudarem atualizando o codigo ou um codigo novo??

package gui;

import javax.swing.*;

import java.awt.*;

import javax.swing.table.*;

import java.sql.*;

public class Tabela extends JFrame{
public Tabela(){
super(“JTable”);

final DefaultTableModel modelo = new DefaultTableModel();

// constrói a tabela
JTable tabela = new JTable(modelo);

// Cria duas colunas
modelo.addColumn("Id");
modelo.addColumn("Nome");
modelo.addColumn("Idade");
modelo.addColumn("Telefone");
modelo.addColumn("Cpf");

// exibe os dados da tabela MySQL
try{
  Class.forName("com.mysql.jdbc.Driver").newInstance();
  Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/farmaciatargaryen",
  		"root", "root");
       
  // procedimentos para obter os dados de uma tabela
  Statement stmt = conn.createStatement();
  String query = "SELECT * FROM pessoa";
  ResultSet rs = stmt.executeQuery(query);
  Container c = getContentPane();
  c.setLayout(new FlowLayout());
  while(rs.next()){ 
	 int id = rs.getInt("ID");
    String nome = rs.getString("NOME");
    String idade = rs.getString("IDADE");
    String telefone = rs.getString("TELEFONE");
    String cpf = rs.getString("CPF");
    modelo.addRow(new Object[]{new Integer(id), nome, idade, telefone, cpf, new Integer(idade)});
  }
       
  // fim procedimento para obter os dados
  } 
  catch(SQLException ex){
       System.out.println("SQLException: " + ex.getMessage());
       System.out.println("SQLState: " + ex.getSQLState());
       System.out.println("VendorError: " + ex.getErrorCode());
  }
  catch(Exception e){
    System.out.println("Problemas ao tentar conectar com o banco de dados");	
}
// fim MySQL

tabela.setPreferredScrollableViewportSize(new Dimension(350, 50));

Container c = getContentPane();
c.setLayout(new FlowLayout());
  	
JScrollPane scrollPane = new JScrollPane(tabela);
c.add(scrollPane);
	
setSize(400, 300);
setVisible(true);

}

public static void main(String args[]){
Tabela app = new Tabela();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.suiteescdesktop.imobiliario.model.tablemodel;

import br.com.suiteescdesktop.imobiliario.beans.Bairro;
import br.com.suiteescdesktop.imobiliario.beans.Cidade;
import br.com.suiteescdesktop.imobiliario.beans.Estado;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

/**
*

  • @author Godzilla
    */
    public class BairroTableModel extends AbstractTableModel{

    private static final long serialVersionUID = 1L;

    /* Lista De Tipo De Imóvel Que Representam As Linhas. */
    private List listaBairro;

    /* Array De Strings Com O Nome Das Colunas. */
    private String[] colunas = new String[]{
    “Código”,“Nome”,“Estado”,“Cidade”};

    /* Cria Um BairroTableModel Vazio. */
    public BairroTableModel() {
    listaBairro = new ArrayList();
    }

    /* Cria Um BairroTableModel Carregado Com A Lista De Bairro Especificada. */
    public BairroTableModel(List listaBairro) {
    listaBairro = new ArrayList(listaBairro);
    }

    /* Retorna A Quantidade De Colunas. */
    @Override
    public int getColumnCount() {
    // Está Retornando O Tamanho Do Array “Colunas”.
    return colunas.length;
    }

    /* Retorna A Quantidade De Linhas. */
    @Override
    public int getRowCount() {
    // Retorna O Tamanho Da Lista De Bairro.
    return listaBairro.size();
    }

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

    @Override
    public Class<?> getColumnClass(int columnIndex) {
    return String.class;
    };

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
    Bairro bairro = listaBairro.get(rowIndex);

     // Retorna O Campo Referente A Coluna Especificada.  
     // Aqui É Feito Um Switch Para Verificar Qual É A Coluna  
     // E Retornar O Campo Adequado. As Colunas São As Mesmas  
     // Que Foram Especificadas No Array "Colunas".  
     switch (columnIndex) {  
    
         // Seguindo O Exemplo: "Tipo","Data de Cadastro", "Nome", "Idade"};  
         case 0:  
             return bairro.getCodigoBairro();  
         case 1:  
             return bairro.getNomeBairro();  
         case 2:  
             return bairro.getCodigoEstadoBairro().getNomeEstado();  
         case 3:  
             return bairro.getCodigoCidadeBairro().getNomeCidade();  
         default:  
             // Isto Não Deveria Acontecer...  
             throw new IndexOutOfBoundsException("columnIndex out of bounds");  
     }  
    

    }

    @Override
    //Modifica Na Linha E Coluna Especificada
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
    Bairro bairro = listaBairro.get(rowIndex); // Carrega O Item Da Linha Que Deve Ser Modificado

     switch (columnIndex) { // Seta O Valor Do Campo Respectivo  
         case 0:  
             bairro.setCodigoBairro(Integer.parseInt(aValue.toString()));  
         case 1:  
             bairro.setNomeBairro(aValue.toString());  
         case 2:  
             Estado estado = null;
             estado.setNomeEstado(aValue.toString());
             bairro.setCodigoEstadoBairro(estado);  
         case 3:  
             Cidade cidade = null;
             cidade.setNomeCidade(aValue.toString());
             bairro.setCodigoCidadeBairro(cidade);  
         default:  
             // Isto Não Deveria Acontecer...               
     }  
     fireTableCellUpdated(rowIndex, columnIndex);  
    

    }

    //Modifica Na Linha Especificada
    public void setValueAt(Bairro aValue, int rowIndex) {
    Bairro bairro = listaBairro.get(rowIndex); // Carrega O Item Da Linha Que Deve Ser Modificado

     bairro.setCodigoBairro(aValue.getCodigoBairro());  
     bairro.setCodigoCidadeBairro(aValue.getCodigoCidadeBairro());
     bairro.setCodigoEstadoBairro(aValue.getCodigoEstadoBairro());
     bairro.setNomeBairro(aValue.getNomeBairro());  
    
     fireTableCellUpdated(rowIndex, 0);  
     fireTableCellUpdated(rowIndex, 1);  
    

    };;

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
    return false;
    }

    public Bairro getBairro(int indiceLinha) {
    return listaBairro.get(indiceLinha);
    }

    /* Adiciona Um Registro. */
    public void addBairro(Bairro bairro) {
    // Adiciona O Registro.
    listaBairro.add(bairro);
    int ultimoIndice = getRowCount() - 1;

     fireTableRowsInserted(ultimoIndice, ultimoIndice);  
    

    }

    /* Remove A Linha Especificada. */
    public void removeBairro(int indiceLinha) {
    listaBairro.remove(indiceLinha);
    fireTableRowsDeleted(indiceLinha, indiceLinha);
    }

    /* Adiciona Uma Lista De Bairro Ao Final Dos Registros. */
    public void addListBairro(List listaBairro) {
    // Pega O Tamanho Antigo Da Tabela.
    int tamanhoAntigo = getRowCount();

     // Adiciona Os Registros.  
     this.listaBairro.addAll(listaBairro);  
    
     fireTableRowsInserted(tamanhoAntigo, getRowCount() - 1);  
    

    }

    /* Remove Todos Os Registros. */
    public void clear() {
    listaBairro.clear();
    fireTableDataChanged();
    }

    /* Verifica Se Este Table Model Esta Vazio. */
    public boolean isEmpty() {
    return listaBairro.isEmpty();
    }
    }

Aqui vai um exemplo de um proprio model customizado tente sair do DefaultTableModel, pois não é recomendando usar.

Está exibindo normalmente todos os dados, não alterei nada, exceto o nome do banco de dados e as colunas

como é?? kk

No meu banco de dados tem os atributos codigo, nome, cpf, telefone.
Então eu alterei:
modelo.addColumn(“Codigo”);
modelo.addColumn(“Nome”);
modelo.addColumn(“CPF”);
modelo.addColumn(“Telefone”);

Alterei para fazer a conexao com meu banco de dados