Feliz 2008 pessoal,
Bom, to populando um jTable com dados vindos do meu BD.
Só que queria preferencialmente, que ao usuário clicar numa linha do grid, abrisse uma tela de pop-up, trazendo o objeto do banco em questão, para editar, mas ja fucei os metodos do jTable mas nao consigo nada que me avise qdo uma linha foi selecionada.
Alguem tem alguma idéia?
jTable, metodos para pegar linha que foi editada?
4 Respostas
Tente usar o método:
Coloquei isso, mas não aceita, fala que não ser usado na minha tela (gui.TelaMain).
jTable1.getModel().addTableModelListener(this);
Eu estou usando o NetBeans, pois não saco nada de APP´s gráficas , e to levando uma surra com isso.
Caso isso funcionasse, como eu capturaria o evento?
Sua tela teria que implementar ListSelectionListener para que isso fosse possível.
Tente fazer:
jTable1.getModel().addTableModelListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
//Use trate o evento aqui.
}
}
);
Me vem que não pode ser aplicado.
Vo colar minha classe aqui, pois talvez ajude. As coisas ficam meia confusa pois o netbeans gera mto código, e não permite alterar de forma explicíta, e eu que estou usando o netbeans somente por causa da facilidade de se construir telas, acaba sendo um tyiro no pé.
Se alguem tiver alguma ideia agradeço, pois ja esgotei as pesquisas no google que me desse alguma pista.
Vlw galera.
public class TelaMain extends JFrame implements ActionListener,ListSelectionListener {
/** Creates new form TelaMain */
public TelaMain() {
super("SisNav");
initComponents();
jTextField1.addActionListener(this);//Nome
jTextField2.addActionListener(this);
jTextField3.addActionListener(this);
jTextField4.addActionListener(this);
jTextField5.addActionListener(this);
jTextField6.addActionListener(this);
jTextField7.addActionListener(this);
jTextField8.addActionListener(this);
jButton1.addActionListener(this);
jButton2.addActionListener(this);
jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
=======>>>>>> jTable1.getModel().addTableModelListener(this); //me da um erro falando que não pode ser aplicado, mas pq ????
}
public void tableChanged(TableModelEvent e) {
int row = e.getFirstRow();
int column = e.getColumn();
TableModel model = (TableModel)e.getSource();
String columnName = model.getColumnName(column);
Object data = model.getValueAt(row, column);
System.out.println("Nome da Coluna :"+ columnName);
}
...
Ou se coloco este metodo logo após o construtor TelaMain():
jTable1.getModel().addTableModelListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
//Use trate o evento aqui.
System.out.println("heloo");
}
}
);
Fica reclamando pedindo um identificador.
Alguma susgestão???