Re:JTable - Essa é difícil

Tu parece tá perdido… Os JTextFields tão recebendo o mesmo valor, o da célula selecionada, quando deviam tá recebendo o valor de cada coluna da linha selecionada.

E não seria

bv.add(rs.getString(a)+"");

?

Esse topico ajudou muito… tava com esse problema!

:slight_smile:

Quem puder ajudar…
Eu tenho um JTable com 3 colunas que faz um select no banco de dados:

[code] TableModel model = new DefaultTableModel(body, head);
final TableRowSorter sorter = new TableRowSorter(model);

private void Table()throws Exception {
	try {
		rs = stmt.executeQuery("select cod_fiscal, empresa, fil_cod  from f_natur");
		rsmd = rs.getMetaData();
		int col  = rsmd.getColumnCount();
		while(rs.next()) {
			bv = new Vector<String>();
			int a;
			for(a=1;a<=col;a++) {
				if(flag) {
					head.add(rsmd.getColumnName(a));
				}
				bv.add(rs.getString(a).toString()+"");
			}
			body.add(bv);
			flag=false;
			}
		rs.close();
		stmt.close();
		con.close();
	}
	catch(Exception exec) {
		JOptionPane.showMessageDialog(null, "Problemas na tabela.", "Erro", JOptionPane.ERROR_MESSAGE);
		exec.printStackTrace();
	}
	jTable = new JTable(body, head);
	jTable.setLocation(new Point(15, 118));
	jTable.setBackground(new Color(204, 204, 204));
	jTable.setAutoscrolls(true);
	jTable.setSize(new Dimension(200, 200));
	jTable.setModel(model);
	jTable.setRowSorter(sorter);
	jTable.setSize(new Dimension(200, 200));
	jTable.addMouseListener(this); [/code]

Quando clicar em alguma linha da tabela, os JTextField’s 1,2 e 3 pegam os valores:

public void mouseClicked(MouseEvent e) { if (e.getClickCount() >= 0) { int row = jTable.getSelectedRow(); int column = jTable.getSelectedColumn(); Object o = jTable.getValueAt(row, column); String value = ""; if (o != null) { value = o.toString(); } jTextField1.setText(value); jTextField2.setText(value); jTextField3.setText(value); } }
Dessa forma não dá certo porque se eu clicar em qualquer linha os JTextField’s vão pegar os mesmos resultados.

Eu queria o seguinte: quando clicar em qualquer linha, o JTextField1 pegue o valor da coluna1, o JTextField2 pegue o valor da coluna2 e o JTextField3 pegue o valor da coluna3, da mesma linha.

Por exemplo:
Eu tenho três colunas
[cod_fiscal, empresa, fil_cod]

Para a coluna cod_fiscal eu tenho 3 linhas
[linha1col1, linha1col2, linha1col3]

Para a coluna empresa eu tenho 3 linhas
[linha2col1, linha2col2, linha2col3]

Para a coluna fil_cod eu tenho 3 linhas
[linha3col1, linha3col2, linha3col3]

cod_fiscal+++empresa+++fil_cod
-linha1col1-----linha1col2—linha1col3
-linha2col1-----linha2col2—linha2col3
-linha3col1-----linha3col2—linha3col3

Se eu clicar na linha 1, da coluna 1 (linha1col1) deverá aparecer no JTextField1 linha1col1, no JTextField2 linha1col2 e no JTextField3 linha1col3

Se eu clicar na linha 3 da coluna 2 (linha3col2) deverá aparecer no JTextField1 linha3col1, no JTextField2 linha3col2 e no JTextField3 linha3col3
Resumindo, os JTextField’s devem pegar os valores de todas linhas, independente da coluna, se é clicado na linha 2 da coluna 3, os JTextField’s devem pegar todos os valores, a começar pela primeira linda coluna…

Ah, as linhas vêem do banco de dados…

Bom, espero não ter complicado muito…

Obrigado

Consegui assim:
[code]public void mouseClicked(MouseEvent e) {
if (e.getClickCount() >= 0) {
if (e.getClickCount() >= 0) {
int row = jTable.getSelectedRow();

	          jTextField1.setText((String) jTable.getValueAt(row,0));
	          jTextField2.setText((String) jTable.getValueAt(row,1));
	          jTextField3.setText((String) jTable.getValueAt(row,2));
	       }
	    }
}[/code]

Valeu