Model da Tabela não carrega!

Boa tarde Galera!
Estou com uma certa dificuldade em exibir uma tabela em um Jframe quando chamado!
Se alguém puder me ajudar, segue os códigos do meu projeto.
Classe Modelo da tabela:

package Model;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
public class ModelTabela extends AbstractTableModel{
    private ArrayList linhas = null;
    private String[] colunas = null;
    public ModelTabela(ArrayList lin, String[] col) {
        setLinhas(lin);
        setColunas(col);
    }
    public ArrayList getLinhas() {
        return linhas;
    }
    public void 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];
    }
}

Código do Jframe que a tem que mostrar a tabela:

public class ViewCadUsuario extends javax.swing.JFrame {
    ConectionBd conecta = new ConectionBd();
    ModelUsuario usuario = new ModelUsuario();
    ControleUsuario controlUser = new ControleUsuario();
    public ViewCadUsuario() {
        initComponents();
        //preencherTabela("SELECT * FROM usuarios ORDER BY id_usuario");
        preencherTabela();
    }
    public void preencherTabela() {
        ArrayList dados = new ArrayList();
        String[] Colunas = new String[]{"ID", "NOME", "SENHA", "PERFIL"};
        conecta.conexao();
        try {
            //PreparedStatement pst = conecta.conn.prepareStatement("SELECT * FROM usuarios ORDER BY nome_usuario", ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
            PreparedStatement pst = conecta.conn.prepareStatement("SELECT * FROM usuarios", ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
            ResultSet rs = pst.executeQuery();
            rs.first();
            do {
                dados.add(new Object[]{conecta.rs.getInt("id_usuario"),
                    conecta.rs.getString("nome_usuario"),
                    conecta.rs.getString("senha_usuario"),
                    conecta.rs.getString("perfil_usuario")});
            } while (conecta.rs.next());
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "ERRO AO PREENCHER TABELA!\n" + ex, "TABELA", JOptionPane.ERROR_MESSAGE);
        }
        ModelTabela modelo = new ModelTabela(dados, Colunas);
        jTable_Tabela.setModel(modelo);
        jTable_Tabela.getColumnModel().getColumn(0).setPreferredWidth(10);
        jTable_Tabela.getColumnModel().getColumn(0).setResizable(false);
        jTable_Tabela.getColumnModel().getColumn(1).setPreferredWidth(10);
        jTable_Tabela.getColumnModel().getColumn(1).setResizable(false);
        jTable_Tabela.getColumnModel().getColumn(2).setPreferredWidth(10);
        jTable_Tabela.getColumnModel().getColumn(2).setResizable(false);
        jTable_Tabela.getColumnModel().getColumn(3).setPreferredWidth(10);
        jTable_Tabela.getColumnModel().getColumn(3).setResizable(false);
        jTable_Tabela.setAutoResizeMode(jTable_Tabela.AUTO_RESIZE_OFF);
        jTable_Tabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);   
    }

Você está seguindo algum livro, pdf, apostila, tutorial, vídeo aula ou afim para criar isso?

@darlan_machado, esse código é de um tutorial antigo que vi no youtube!

Por se tratar de um tutorial eu nem irei apontar os pontos falhos.
Vamos lá, você disse que o TableModel não carrega, como? Dá erro? A tabela fica vazia?