Ola galera tudo bem…seguinte…
estou desenvolvendo um softwarezinho aki e parei no seguinte problema…construi uma janela de busca no swing onde faço a busca pelo nome…ao clicar no botao ‘Buscar’ ele abre uma Jtable onde aparece o resultado da busca…entao dou dois cliques na pessoa q quero e apois isso abre a tela de cadastro…mais ai aparece o problema…queria poder trazer os dados q estao na Jtable e coloca-las na janela cadastro…como fazer isso??
Uma alternativa, é inserir em uma das colunas da tabela, um objeto que contenha todas as informações que você precisa.
entao consegui resolver uma boa parte do problema agora estam restando dois
Seguinte faço 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!
1º - Você está obtendo realmente a linha selecionada? getSelectedRow(): retorna o index na camada model da primeira linha selecionada.
2º - Você é que tem que colocar cada informação na sua devida coluna. Como está inserindo os dados nas colunas?
segue o codigo assim podera entender melhor…
[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+""); /*aqui gostaria que retorna-se so o nome da pessoa...mais ta retornando todos os dados
apois estar correto preenche os outro campos*/
} }
}
});
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]
Aparece todos elementos porque está sendo invocado implicitamente o método toString da classe Vector.
seguinte tenho que fazer uma adaptação aqui…creio eu…
for(int i=1;i<linhas.capacity();++i){ /*linhas tem q percorrer todo o resultado obtido na JTable ou todos os campos do banco mais creio eu que e todo resultado obtido entao nao tenho a certeza se e linhas.capacity()*/
pa.nome.setText( linhas.get( i ) + "" );/* qndo vc colocou 0(zero) dentro de linhas.get ocorreu o seguinte com o zero selecionou a primeira linha....se mudo para 1 seleciona a segunda...assim sucessivamente..entao colocando a variavel i..q acima se o "for" estiver correto creio eu q ele ira selecionar corretamente a linha na qual clicar..ou tenho q igualar a linha talvez...igualar algo q ainda nao sei....*/
} }
aberto a sugestões!
entao que descissao seria mais viavel tomar??sobre o metodo toString?
entao a parte do clique na linha resolvi…
if(row>=0){
pa.nome.setText(linhas.get(row)+"");
}
agora falta a parte de pegar um dado so…no caso nome para o campo nome…etc