Problemas na implementação do AbstractTableModel

1 resposta
G

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.<em>;

import java.util.</em>;

import java.awt.event.<em>;

import javax.swing.</em>;

import javax.swing.table.<em>;

import javax.swing.event.</em>;

import <a href="http://java.io">java.io</a>.<em>;

import java.text.</em>;

import java.sql.<em>;

import java.sql.Date.</em>;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.<em>;

import java.util.Vector;

import java.util.Date;

import java.applet.</em>;

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]

1 Resposta

R

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

Criado 9 de janeiro de 2005
Ultima resposta 9 de jan. de 2005
Respostas 1
Participantes 2