JTable + Focus em pesquisa pelo JTextField

0 respostas
Luis_Correa
package apresentacao;
	import javax.swing.JButton;
import javax.swing.JFrame;
	import javax.swing.JTable;
	import java.sql.*;
	import javax.swing.*;
	import java.awt.*;
	import java.awt.Event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.*;
public class Tabelex extends JFrame implements ActionListener, KeyListener{
Connection conexao; 
JTable tab;
JButton a;
JTextField procurar;
public static JFrame pq = new Tabelex();
public Tabelex ()
{
	
setTitle("Tabel");
setSize(600,300);
String url = "jdbc:odbc:bdtcc";

try
{
	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	conexao = DriverManager.getConnection(url,"","");
	
}
catch(ClassNotFoundException cne){
	System.out.println("Erro ao carregar o driver");
}
catch (SQLException sqlne)
{
	System.out.println("Problemas na Conexão");
}
buscaTabel();
}
public void buscaTabel()
{
	Statement st;
	ResultSet res;
	try
	{
		Vector cabecalho = new Vector();
		Vector linhas = new Vector();
		st = conexao.createStatement();
		res = st.executeQuery("select * from Convenio"); // where nm_convenio like'"+cadastroConvenio.txtconv.getText()+"%'"
		res.next();
		//busca cabeçalho
		ResultSetMetaData rsmd = res.getMetaData();
		for(int i = 1; i <= rsmd.getColumnCount();++i){

			cabecalho.addElement(rsmd.getColumnName(i));
	}
	//	
		//linhas
		do
		{
			linhas.addElement(proximaLinha(res,rsmd));
		}
		while(res.next());
		//mostra tabela
		tab = new JTable(linhas, cabecalho);
		JScrollPane scroller = new JScrollPane(tab);
		getContentPane().add(scroller, BorderLayout.CENTER);
		
	
		
		procurar = new JTextField();
		procurar.addKeyListener(this);
		getContentPane().add(procurar,BorderLayout.NORTH);
		validate();	
		st.close();
		
		
	}
	catch(SQLException sqlex)
	{
		
	}
}
private Vector proximaLinha(ResultSet rs, ResultSetMetaData rsmd)
{
	Vector LinhaAtual = new Vector();
	try
	{
		for(int i = 1; i <= rsmd.getColumnCount();++i)
			switch(rsmd.getColumnType(i))
			{
			case Types.VARCHAR:
				LinhaAtual.addElement(rs.getString(i));break;
			case Types.INTEGER:
				
				LinhaAtual.addElement(new Long(rs.getLong(i)));break;
			}
		}
		catch(SQLException e)
		{
	
		}
	
	return LinhaAtual;
		
	
}
 private void procuraTable(String nome){   
	         int tamanho = nome.length();   
	         for (int linha = 0; linha<tab.getRowCount(); linha++){   
	             String nomeTabela = (String)tab.getValueAt(linha, 1);   
	             if ((nomeTabela.length() >= tamanho) && (nomeTabela.substring(0,tamanho).equals(nome))){   
	                 tab.setRowSelectionInterval(linha,linha);        
	            
	             }                          
	         }        
	 }  
 

	

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
/*JFrame t2 = new Tabelex();
t2.show();*/
	

		pq.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		
	}
	public void keyPressed(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}
	public void keyReleased(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	        procuraTable(procurar.getText());     
		
	   }  
	
	public void keyTyped(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}

}

Segue o código, então, galera, preciso que na hora que ele procure pelo jtextfield do form, role o jscroll até o ponto..
e isso não tá acontecendo, alguém pode dar um help?

Obrigado desde de já!

Criado 11 de dezembro de 2007
Respostas 0
Participantes 1