Clicando no JTable e retornando pesquisa

Seguinte galera fiz uma consulta aki onde qndo coloco o nome de quem quero procurar ele me retorna os resultados do banco de dados ai dou dois cliques nele e me abre outra tela…mais estou com dois problemas…
1º ele sempre retorna para mim o primeiro cadastro, ou seja, a primeira linha da JTable…
2º não consigo dimensionar cada campo no seu devido lugar,ou seja,colocar no campo nome so o nome da pessoa…endereço so o endereço da pessoa assim por diante…ao inveis disso no campo nome por exemplo vem todos os dados do banco…e eles vem ainda entre “[[]]” dois colchetes…meus unicos problemas são esse dois o resto esta funcionando!

codigo…

[code]
//implementando mostra paciente
public 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;
case Types.TIMESTAMP:
linhaAtual.addElement(rs.getDate(i));
break;
}}
}catch(SQLException ex){

	}
	return linhaAtual;	
}

//mostra paciente
public void mostrapaciente(){
	Statement stmt;
	ResultSet rs;
	
	try{
		Vector cabecalho = new Vector();
		final Vector linhas=new Vector();
		stmt=conex.createStatement();
		rs=stmt.executeQuery("SELECT * FROM paciente WHERE nome LIKE '"+"%"+nome.getText()+"%"+"'");
	    rs.next();
	    ResultSetMetaData rsmd=rs.getMetaData();
	    for(int i=1;i<rsmd.getColumnCount();++i){
	    	cabecalho.addElement(rsmd.getColumnName(i));
	    }do{
	    	linhas.addElement(proximalinha(rs,rsmd));
	    }while(rs.next());
	    final JTable tabela = new JTable(linhas,cabecalho);
	    JScrollPane scroller = new JScrollPane(tabela);
	    getContentPane().add(scroller,BorderLayout.CENTER);
	    tabela.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);  
	   
	     tabela.setDefaultEditor(Object.class, null); 
	     tabela.addMouseListener(new MouseAdapter() {  
	         public void mouseClicked(MouseEvent e)  
	         {  
	             if (e.getClickCount() == 2)  
	             {  
	                 Point p = e.getPoint();  
	                 int row = tabela.rowAtPoint(p);  
	                 int col = tabela.columnAtPoint(p);  
	            JanelaPaciente pa =new JanelaPaciente();
	            for(int i=1;i<linhas.capacity();++i){
	            pa.nome.setText(linhas+"");

//apois o primeiro campo estar corrento coloco os outros…
} }
}
});

	    JFrame frame = new JFrame("CADASTRO PACIENTES");  
	             frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);  
	             frame.setSize(600,300);  
	             frame.setLocationRelativeTo(null);  
	             frame.add(BorderLayout.CENTER, new JScrollPane(tabela));  
	             frame.setVisible(true);
	             stmt.close();
	          } catch (Throwable t) {}
	          }
[/code]

da um help ai…vlw

Só dexa eu ver se entendi

quando vc faz a consulta ele somente joga o primeiro campo do banco de dados na sua consulta??

abrass

:wink:

entao…eu faço a consulta e me retorna do banco todos os resultados corretamente…mais qndo quero escolher o cadastro da pessoa q quero q abra na outra tela eu consigo normalmente clicar em qualquer cadastro do resultado da consulta porem ao abrir a outra tela sempre vai o primeiro cadastro do resultado da consulta…a primeira linha da JTable…caso selecione um cadastro q esta em outra linha…ele envia sempre a primeira linha da JTable…

tipo assim

vc não poderia criar uma lista ai fazer a seleção das linhas??

tipo assim

fazer que quando vc clicasse em um determinado “registro” ele fissese uma vereficação ou seja uma especie de while

vc poderia alterar o teu codigo sql…

espero que vc tenha entendido :?

abrass :wink:

olha o codigo aki…assim vc pode entender melhor o funcionamento dele…e me explicar melhor q fazer…

[code]
//implementando mostra paciente

public 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;
			case Types.TIMESTAMP:
				linhaAtual.addElement(rs.getDate(i));
				break;
			}}
	}catch(SQLException ex){
	
	}
	return linhaAtual;	
}

//mostra paciente
public void mostrapaciente(){
	Statement stmt;
	ResultSet rs;
	
	try{
		Vector cabecalho = new Vector();
		final Vector linhas=new Vector();
		stmt=conex.createStatement();
		rs=stmt.executeQuery("SELECT * FROM paciente WHERE nome LIKE '"+"%"+nome.getText()+"%"+"'");
	    rs.next();
	    ResultSetMetaData rsmd=rs.getMetaData();
	    for(int i=1;i<rsmd.getColumnCount();++i){
	    	cabecalho.addElement(rsmd.getColumnName(i));
	    }do{
	    	linhas.addElement(proximalinha(rs,rsmd));
	    }while(rs.next());
	    final JTable tabela = new JTable(linhas,cabecalho);
	    JScrollPane scroller = new JScrollPane(tabela);
	    getContentPane().add(scroller,BorderLayout.CENTER);
	    tabela.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);  
	   
	     tabela.setDefaultEditor(Object.class, null);  
	     tabela.addMouseListener(new MouseAdapter() {  
	         public void mouseClicked(MouseEvent e)  
	         {  
	             if (e.getClickCount() == 2)  
	             {  
	                 Point p = e.getPoint();  
	                 int row = tabela.rowAtPoint(p);  
	                 int col = tabela.columnAtPoint(p);  
	            JanelaPaciente pa =new JanelaPaciente();
	            for(int i=1;i<linhas.capacity();++i){
	            pa.nome.setText(linhas+"");
	             } } 
	         }  
	     });		    
	    
	    JFrame frame = new JFrame("CADASTRO PACIENTES");  
	             frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);  
	             frame.setSize(600,300);  
	             frame.setLocationRelativeTo(null);  
	             frame.add(BorderLayout.CENTER, new JScrollPane(tabela));  
	             frame.setVisible(true);
	             stmt.close();
	             
	          } catch (Throwable t) {}
	          
}[/code]