Problemas ao preencher tabela com dados vindo do banco

1.criei uma classe que faz o modelo da tabela
public class ModeloTabela extends AbstractTableModel {

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

// Abaixo, método responsável por setar a quantidade de linhas e colunas
public ModeloTabela(ArrayList lin, String[] col){
	setLinhas(lin);
	setColunas(col);
}

// abaixo método para retornar as linhas
public ArrayList getLinhas(){
	return linhas;
}

// método para Setar(Fazer) as linhas, preenchar as linhas 
public void setLinhas(ArrayList dados){
	linhas = dados;
}


public String[] getColunas(){
	return colunas;
}

 // Responsável por preencher os nomes das colunas
public void setColunas(String[] nomes){
	colunas = nomes;
}


//retorna o numero de colunas
public int getColumnCount(){
	return colunas.length;
}

//retorna quantidades de linhas
public int getRowCount(){
	return linhas.size();
}

// responsável por pegar o valor da colunas
public String getColumnName(int numCol){
	return colunas[numCol];
}

// Pega colunas(numCol) e linhas(numLin) para montar a tabela
public Object getValueAt(int numLin, int numCol){
Object[] linha = (Object[])getLinhas().get(numLin);
return linha[numCol];

}

2.coloquei na minha classe controle um metodo responsavel por fazer uma consulta no banco de dados e armazenar em uma List

public List buscarTodosUsuarios() throws SQLException {

	  conexao.conexao();

       String sql = "SELECT * FROM tbusuarios";
       pst = conexao.con.prepareStatement(sql);
       ResultSet rs;
      

       rs = pst.executeQuery();
       
       List<ModeloUsuario> modelos = new ArrayList<ModeloUsuario>();
       
       while (rs.next()) {
           ModeloUsuario modelo = new ModeloUsuario();
           modelo.setId(rs.getInt("iduser"));
           modelo.setPerfil(rs.getString("perfil"));
           modelo.setFone(rs.getString("fone"));
           modelo.setLogin(rs.getString("login"));
           
           modelos.add(modelo); 
       }
       rs.close();
       return modelos;
  }
  1. na minha camada view eu criei uma jtable que se chama TABLE…adicionei ela dentro de um JScrollPane

    JScrollPane scrollPane = new JScrollPane();
    scrollPane.setBounds(10, 313, 410, 311);
    panel.add(scrollPane);

     table = new JTable();
     scrollPane.add(table);
     
     
     
     ArrayList dados = new ArrayList();
     
     String [] Colunas = new String[]{"ID","nome","telefone","login", "perfil"};
     
     
     
     try {
     	
     	do{
     		//preenchendo arrayList com dados do banco de dados que foram passados para a classe modelo
     		dados.add(new Object[]{modelo_usuario.getId(), modelo_usuario.getUsuario().toString(), modelo_usuario.getFone(), modelo_usuario.getLogin(), modelo_usuario.getPerfil()});
     	
     		//aqui estou querendo fazer while que enquanto exista dados no List ele vá construindo
     	}while(dados.listIte());
     	
     } catch (Exception e) {
     	JOptionPane.showMessageDialog(null, e);
     }
     		
     
     ModeloTabela tabelaModelo = new ModeloTabela(dados, Colunas);
     	
     table.setModel(tabelaModelo);	
     	
     
     //coluna ID
     table.getColumnModel().getColumn(0).setPreferredWidth(80);
     table.getColumnModel().getColumn(0).setResizable(false);
     
     //coluna nome
     table.getColumnModel().getColumn(1).setPreferredWidth(80);
     table.getColumnModel().getColumn(1).setResizable(false);
     
     //coluna telefone
     table.getColumnModel().getColumn(2).setPreferredWidth(80);
     table.getColumnModel().getColumn(2).setResizable(false);
     
     //coluna login
     table.getColumnModel().getColumn(3).setPreferredWidth(80);
     table.getColumnModel().getColumn(3).setResizable(false);
     
     //coluna perfil
     table.getColumnModel().getColumn(4).setPreferredWidth(80);
     table.getColumnModel().getColumn(4).setResizable(false);
     
     
     table.getTableHeader().setReorderingAllowed(false);
     table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
     
     //só sera possivel selecionar um item
     table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);