Problemas na implementação do AbstractTableModel

Pessoal estou com o seguinte problema, estou desenvolvendo uma aplicação que valida o login do usuário e gera uma consulta em um JTable. Isto funciona muito bem, porêm ao implementar com AbstracTableModel, não consigo gerar a tabela. Gera erros de implementação do Jscrollpane entre outros, mais isto durante a exibição da tabela.
Anexei os trechos que me paraceram mais relevantes e onde efetuo a implementação da classe.
Muito obrigado a todos

import java.awt.;
import java.util.
;
import java.awt.event.;
import javax.swing.
;
import javax.swing.table.;
import javax.swing.event.
;
import java.io.;
import java.text.
;
import java.sql.;
import java.sql.Date.
;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.;
import java.util.Vector;
import java.util.Date;
import java.applet.
;

public class Minhaclass extends JApplet implements ActionListener, MouseListener, KeyListener {

public String userName = "";
public String passWord = "";
public String url = "";
public String serverName = "";
public String myDataBase = "";
public String query;
public Statement stmt;
public Connection con;
public Frame frame;
public JTable table;
public JScrollPane scroller;
public boolean segue, achou ;
public Integer Codigo = new Integer(0);
public String meses;
ResultSet rs;
Date data1 = new java.util.Date();
String data2;
JOptionPane d = new JOptionPane();
JButton botok, botsair;
int i;
public JComboBox combo;
public static final String OpcMeses[] = { "01","02","03","04","05","06","07","08","09","10","11","12"};
Font fn = new Font("ARIAL",0, 16);


public void actionPerformed(ActionEvent ae) {
	if(ae.getSource() == botok) {
       boolean segue = false;
       DadosTableModel table = new DadosTableModel(meses, userName, passWord);
	   table.setModel(m);
	   table.setFocusable(false);
	   table.setCursor(new Cursor(Cursor.HAND_CURSOR));
   	   int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
	   int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
	   scroller = new JScrollPane(table,v,h);
	   getContentPane().add(scroller,BorderLayout.CENTER);
	   setSize(790,500);}
      
	else if(ae.getSource() == botsair) {
	   setVisible(false);
	   segue = false;}
}


public void keyPressed(KeyEvent e){}
public void keyTyped(KeyEvent e) {}

}

class DadosTableModel extends AbstractTableModel
{
TextField userName;
TextField passWord;
public Vector rows;
public Vector row;
public Vector data;
public Vector heads;
public Vector colHeads;
DadosTableModel(String MesInformado,String Usuario, String Senha) {
String st = Usuario.substring(1,15);
String Tabelas = st + “m” + MesInformado;
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try
{
Class.forName(“org.gjt.mm.mysql.Driver”);
String serverName = “localhost”;
String myDataBase = “BancoDados”;
String url = “jdbc:mysql://”+serverName+"/"+myDataBase;
con = DriverManager.getConnection(url,Usuario,Senha);
String query = “SELECT * FROM " + Tabelas;
stmt = con.createStatement();
try
{
rs = stmt.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
int numCols = rsmd.getColumnCount();
if(rs != null)
{
final String[] colHeads = { “Col1”,“Col2”,“Col3”,“Col4”,“Col5”,“Col6”,“Col7”,“Col8”};
heads = new Vector();
for (int j=0;j<colHeads.length;j++)
{
heads.addElement(colHeads[j]);
}
SimpleDateFormat fdatas = new SimpleDateFormat(“dd/MM/yyyy”);
Vector rows = new Vector();
while(rs.next())
{
row = new Vector();
row.addElement(rs.getString(1));
row.addElement(fdatas.format(rs.getDate(2)));
row.addElement(rs.getString(3));
row.addElement(rs.getString(4));
row.addElement(rs.getString(5));
try{ row.addElement(fdatas.format(rs.getDate(6)));}
catch(Exception ex){row.addElement(”");}
row.addElement(rs.getString(8));
try{ row.addElement(fdatas.format(rs.getDate(7)));}
catch(Exception ex){row.addElement("");}
rows.addElement(row);
}
/*
table = new JTable(rows,heads);
table.setBackground(new Color(185,250,150));
table.setFocusable(false);
table.setCursor(new Cursor(Cursor.HAND_CURSOR));
int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
scroller = new JScrollPane(table,v,h);
getContentPane().add(scroller,BorderLayout.CENTER);
setSize(790,500);
*/
}
}
catch(SQLException ex)
{ JOptionPane.showMessageDialog(null,“NAO EXISTEM O MOVIMENTO!!!”,“ERRO:”,0);}

	}
	catch (ClassNotFoundException e)
	{   System.out.println ("O driver expecificado não foi encontrado.");
	    e.printStackTrace();
    }
    catch(SQLException ex)
    {
        System.out.println("Error");
        System.out.println(ex);
    }
}

public int getRowCount() {
    return (rows.size());
}

public int getColumnCount() {	
    return heads.size();	
}

public Object getValueAt(int linha, int coluna) {
    java.util.List row = (java.util.List)rows.get(linha);
    return (String)row.get(coluna);		
}
                            	
public void setValueAt(Object aValue,int rowIndex,int columnIndex) {
    System.out.println("Para atualizar o campo no DB...");
}

public String getColumnName(int coluna) {
    return (String)heads.get(coluna);
}
                                    	
public boolean isCellEditable(int rowIndex,int columnIndex) {
    return false;
}

}

[size=“8”][/size]

q tal fazer uma classe extender da classe DefaultTableModel??

muito mais fácil…

PS.: use as tags do BB para postar códigos no forum