Tengo un JTable con varios datos que me jalo de una base de datos en SQL Server y necesito que al hacer click en una fila del JTable, los datos de esta fila se me pasen a los JTextField, he trato ya con varias cosas y aun no he podido hacer que funcione ni he podido entender bien la funcionalidad del JTable y los modelos de tablas.
Me podrian aventar una mano?
Mi código es el siguiente:
Código:
Muchas gracias import java.sql.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.event.*; import javax.swing.table.*; public class Cliente extends JFrame implements ActionListener { String dsn = "dsnParqueadero"; //Define el string de Conexión JPanel jpFormulario = new JPanel(); JTable tblC = new JTable(); JLabel lbldocumento = new JLabel("Documento:"); JLabel lblNombres = new JLabel("Nombres:"); JLabel lblApellidos = new JLabel("Apellidos:"); JLabel lblTelefono = new JLabel("Teléfono:"); JTextField txtDocumento = new JTextField(15); JTextField txtNombres = new JTextField(15); JTextField txtApellidos = new JTextField(15); JTextField txtTelefono = new JTextField(10); JButton btnGuardar = new JButton("Guardar"); JButton btnLimpiar = new JButton("Limpiar"); JButton btnBuscar = new JButton("Buscar"); public static void main(String[] args) { new Cliente(); } public Cliente() { //Instancia la ventana super("Cliente"); this.setSize(400,300); this.setResizable(false); //Contenedor de los elementos de la ventana jpFormulario.setLayout(null); //Define el string de conexión BaseDatos.strDSNUsuarioConexion(dsn); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { dispose(); System.exit(0); } }); /*formulario*/ //Agregar los elementos de la ventana lbldocumento.setBounds(10,10,150,20); jpFormulario.add(lbldocumento); txtDocumento.setBounds(90,10,190,20); jpFormulario.add(txtDocumento); btnBuscar.setBounds(290,10,90,20); btnBuscar.setToolTipText("Buscar con el dato digitado."); jpFormulario.add(btnBuscar); lblNombres.setBounds(10,40,150,20); jpFormulario.add(lblNombres); txtNombres.setBounds(90,40,190,20); jpFormulario.add(txtNombres); lblApellidos.setBounds(10,70,150,20); jpFormulario.add(lblApellidos); txtApellidos.setBounds(90,70,190,20); jpFormulario.add(txtApellidos); lblTelefono.setBounds(10,100,150,20); jpFormulario.add(lblTelefono); txtTelefono.setBounds(90,100,190,20); jpFormulario.add(txtTelefono); btnLimpiar.setBounds(100,130,90,20); btnLimpiar.setToolTipText("Limpiar los campos."); jpFormulario.add(btnLimpiar); btnGuardar.setBounds(200,130,90,20); btnGuardar.setToolTipText("Guardar los datos digitados."); jpFormulario.add(btnGuardar); LlenarGrid(); tblC.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int row = tblC.rowAtPoint(e.getPoint()); /* row devolvera -1 si se ha clicado fuera de la fila pero dentro de la tabla, si no devolvera el indice de la fila en la que se ha clicado. */ txtDocumento.setText(tblC.getValueAt(row, 0).toString()); txtNombres.setText(tblC.getValueAt(row, 0).toString()); txtApellidos.setText(tblC.getValueAt(row, 0).toString()); txtTelefono.setText(tblC.getValueAt(row, 0).toString()); } }); getContentPane().add(jpFormulario); //Agregar los elementos de la ventana btnGuardar.setActionCommand("Guardar"); //Define el comando para la acción btnGuardar.addActionListener(this); //Agrega al escuchador de eventos btnLimpiar.setActionCommand("Limpiar"); //Define el comando para la acción btnLimpiar.addActionListener(this); //Agrega al escuchador de eventos btnBuscar.setActionCommand("Buscar"); //Define el comando para la acción btnBuscar.addActionListener(this); //Agrega al escuchador de eventos this.show(); } public void actionPerformed(ActionEvent e) { String opcion = e.getActionCommand(); //Evento activado if (opcion.equals("Limpiar")) Limpiar(); else if (opcion.equals("Guardar")) { Guardar(); LlenarGrid(); Limpiar(); } else if (opcion.equals("Buscar")) Buscar(); } public void Limpiar() { } public void Guardar() { } public void Buscar() { } public void LlenarGrid() { clsCliente objCliente = new clsCliente(); VectorId idC = new VectorId(); objCliente.CambiarGridCliente(tblC); if (objCliente.LlenarGrid(idC)==false) { BaseDatos.mensaje("Llenando datos",objCliente.ObtenerError()); } else { JScrollPane sp = new JScrollPane(objCliente.ObtenerGridCliente()); sp.setBounds(15,160,365,100); jpFormulario.add(sp); objCliente = null; } } }