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)+"");
?
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!
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