JTable retornando erro

4 respostas
own_prison

E ae galera!!!

O meu problema é o seguinte… eu pego uma pesquisa de um banco de dados SQL… com os seguintes campos… CODIGO, TITULO, TITULO(INGLES), EMPRESTADO,USUARIO,DONO… até agora tudo bem… então eu coloco dentro de um :evil: JTABLE :evil: … entao é o seguinte… eu consigo deletar, alterar … tudo… mais na hora em que eu clico numa linha da tabela… dá pau… e ela mostra a pesquisa antiga da linha… é como se eu naum conseguise limpar a tabela… ela sempre tem uma pesquisa atras… mesmo eu antes de cada pesquisa definindo tab = null … e aí como eu faço pra tirar essa pesquisa que fica atras da minha tabela…??? :roll: :? :slight_smile:

4 Respostas

mlopes

Ola,

Eu não sei como vc implementou isso, mas eu te aconselho a usar o exemplo que vem no jdk. No meu caso:

D:\jdk1.3.1\demo\jfc\TableExample\src\TableExample.java

Eu uso na minha aplicação e dá certo. Precisa de alguns ajustes para funcionar com o seu banco de dados.

[]'s

own_prison

Resolvi colocar o código... pra exemplificar o meu problema.... 8)

import java.util.*;
import javax.swing.*;
import java.sql.*;
import java.awt.event.*;
import java.awt.*;


public class BancoDeDados implements ActionListener{
	Connection conexao;
	JTable tab;
	String sql="SELECT * FROM filmes ORDER BY ([Titulo(ingles)]) asc";
	JInternalFrame F = new JInternalFrame("",false,true,false,false);
	ImageIcon refresh = new ImageIcon("imagensatualizar.jpg");
	JButton atuali = new JButton("Refresh",refresh);
		
	public void actionPerformed(ActionEvent ev){
		if(atuali == ev.getSource()){
			tab = null;
			buscaTabela(sql);
			
		}
		
	}
		
void table(){
	atuali.addActionListener(this);	
	F.setTitle("Banco de Dados");
	F.setSize(1021,555);
	F.getContentPane().setLayout(null);
	atuali.setBounds(0,493,1021,30);
	F.getContentPane().add(atuali);
		try{
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			String url = "jdbc:odbc:Filmes";
			conexao = DriverManager.getConnection(url,"sa","");
		}
		catch(Exception err){
			err.printStackTrace();
		}
		buscaTabela(sql);
	}

	void buscaTabela(String sql){
		Statement st;
		ResultSet res = null;
		try{
			Vector cabecalho = new Vector();
			Vector linhas = new Vector();
			st = conexao.createStatement();
			res = st.executeQuery(sql);
			res.next();
			//busca os cabeçalhos
			ResultSetMetaData rsmd = res.getMetaData();
			for(int i=1; i<=rsmd.getColumnCount();++i)
			cabecalho.addElement(rsmd.getColumnName(i));
			//busca dados das linhas
			do{
				linhas.addElement(proximaLinha(res,rsmd));
			}
			
			while(res.next());
			//Mostra a tabela com cabeçalhos e registros
			tab = new JTable(linhas,cabecalho);
			tab.getTableHeader().setReorderingAllowed(false); 
			tab.getTableHeader().setResizingAllowed(false);
			JScrollPane scroller = new JScrollPane(tab);
			scroller.setBounds(0,0,1014,493);
			F.getContentPane().add(scroller,BorderLayout.CENTER);
			F.setOpaque(true);
			st.close();
			tab.getColumn("Codigo").setPreferredWidth(0);
			tab.getColumn("Titulo(ingles)").setPreferredWidth(230);
			tab.getColumn("Titulo(portugues)").setPreferredWidth(250);
			tab.getColumn("Emprestado").setPreferredWidth(3);
			tab.getColumn("Usuario").setPreferredWidth(75);
			tab.getColumn("Dono").setPreferredWidth(85);
			F.show();
			//colocar centralizado...*/

		}
		catch(SQLException sqlex){
		}
		}
		private Vector proximaLinha(ResultSet rs,ResultSetMetaData rsmd){
			Vector LinhaAtual = new Vector();
			try{
				for(int i = 1;i<=rsmd.getColumnCount();i++){
					LinhaAtual.addElement(rs.getString(i));
				}
			}	
			catch(SQLException e){			
			}
			return LinhaAtual;
		}
}
mlopes

Ola,

Após olhar o código, continuo com a mesma opinião. Use o exemplo.

[]'s

own_prison

Acho q descobri o erro… naum to fechando a conexao com o banco de dados… vou arrumar e ver se funciona… :roll:

Criado 27 de março de 2003
Ultima resposta 30 de mar. de 2003
Respostas 4
Participantes 2