Foros del Web » Programación para mayores de 30 ;) » Java »

¿Seleccionar filas en JTable?

Estas en el tema de ¿Seleccionar filas en JTable? en el foro de Java en Foros del Web. Hola foro, quería preguntarles si me pueden ayudar con un problema que tengo que es el siguiente. Tengo 2 JTextField, uno para nombre y el ...
  #1 (permalink)  
Antiguo 17/03/2011, 19:47
Avatar de leocente  
Fecha de Ingreso: diciembre-2009
Mensajes: 62
Antigüedad: 14 años, 4 meses
Puntos: 4
¿Seleccionar filas en JTable?

Hola foro, quería preguntarles si me pueden ayudar con un problema que tengo que es el siguiente.

Tengo 2 JTextField, uno para nombre y el otro para el apellido y ademas tengo un JTable con 2 filas y 2 columnas.
Lo que yo quiero hacer y no me sale es que cuando haga clic sobre una fila (cuando se selecciona de celeste la fila) automaticamente se rellenen los JTextFields de arriba, y cuando clickee otra fila se actualizen los datos de los JTexFields y asi susecivamente.

Imagenes:

- Cuando inicio el programa los JTextFields estan vacios pero al clickear en la primer fila se rellenas automaticamente asi


http://k08.kn3.net/46F4FAEA0.jpg


- Y cuando pulse sobre la segunda fila se actualizen Los JTextfields de arriba, algo asi


http://k01.kn3.net/52D7FD983.jpg


- Este es mi codigo


Código:
import java.awt.*;
import java.awt.Font;
import java.util.Vector;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class Borrar{
	
	public static void main (String[]args){
		
		JFrame v=new JFrame("Ventana");
		v.setSize(500, 500);
		v.setLayout(null);
		
		String [] d={"Nombre","Apellido"};
		Object[][] info={{"Leo","Martinez"},{"Mauro","Lopez"}};
		
		MiModelo model=new MiModelo();
		model.setDataVector(info, d);
		
		JTable tabla=new JTable(model);
		tabla.setBounds(100, 100, 250, 300);
	        tabla.getTableHeader().setFont(new Font("arial",1,13));
	    
	        JScrollPane scroll=new JScrollPane(tabla);
	        scroll.setBounds(21, 100, 400, 300);
	        v.add(scroll);
	    
	        JPanel panel=new JPanel();
	        JTextField fieldNombre=new JTextField();
	        fieldNombre.setPreferredSize(new Dimension(150,20));
	   
	        JTextField fieldApellido=new JTextField();
	        fieldApellido.setPreferredSize(new Dimension(150,20));
		
		panel.add(fieldNombre);
		panel.add(fieldApellido);
		panel.setBounds(21, 50, 400, 100);
		v.add(panel);
	    
		v.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		v.setVisible(true);
	}
}
class MiModelo extends DefaultTableModel{
	
	public boolean isCellEditable (int filas,int Columnas){

			return false;	
	}
}

Lo que me falta es un método amigos, que me permita operar sobre las filas.
Si algo sirve...

tabla.getSelectedRow(); //Obtengo un nro entero el cual es el nro de fila seleccionada
tabla.setValueAt(Object o, int fila, int columna); //Modifica la celda en la posicion (fila,columna)
tabla.getValueAt(int fila, int columna); // Devuelve el contenido de la celda en la posicion (fila,columna)

Desde ya muchas gracias!
  #2 (permalink)  
Antiguo 18/03/2011, 12:24
Avatar de sivadmp  
Fecha de Ingreso: febrero-2011
Ubicación: La Paz - Bolivia
Mensajes: 293
Antigüedad: 13 años, 2 meses
Puntos: 20
Respuesta: ¿Seleccionar filas en JTable?

hola Leocente

primero tienes que obtener la fila seleccionada

Código java:
Ver original
  1. int row = table.getSelectedRow();

de esta fila seleccionada tienes que obtener sus valores

Código java:
Ver original
  1. String id=table.getValueAt(row, 0).toString();
  2. String name=table.getValueAt(row, 1).toString();

luego adicionar los valores a los textField's

Código java:
Ver original
  1. txt_id.setText(id);
  2. txt_name.setText(name);
  #3 (permalink)  
Antiguo 18/03/2011, 16:23
Avatar de leocente  
Fecha de Ingreso: diciembre-2009
Mensajes: 62
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: ¿Seleccionar filas en JTable?

Intente hacer algo asi para que por lo menos lo actualize 10 veces, no me salio y tampoco es la idea, se me ocurrio tambien un bucleo infinito pero no se como implementarlo.

Código:
		
		int i=0;
		while(i<10){
			
			//Obtengo fila seleccionada
			int fs= tabla.getSelectedRow();
			//Obtengo datos de fila seleccionada
			String nom= tabla.getValueAt(fs,0).toString();
			String ape= tabla.getValueAt(fs,1).toString();
			//Escribo datos iniciales en los JTextFields
			fieldNombre.setText(nom);
			fieldApellido.setText(ape);
			
			i++;
		}

Denme una mano, gracias!
  #4 (permalink)  
Antiguo 19/03/2011, 17:11
 
Fecha de Ingreso: febrero-2008
Ubicación: Sevilla
Mensajes: 91
Antigüedad: 16 años, 2 meses
Puntos: 15
Respuesta: ¿Seleccionar filas en JTable?

No debes hacer bucles infinitos a posta y menos sin tener varios threads en la aplicacion, eso es una chapuza. En todo caso puedes tener un timer que cada x milisegundos compruebe la fila seleccionada y cambie el valor de los campos de texto de la forma que te ha dicho siva...pero sigue siendo un poco chapuza.

La forma mas eficiente es añadir un MouseListener a la tabla, de forma que cada vez que se haga clic dentro de ella, obtengas con el metodo getPoint() del MouseEvent la posicion donde se ha realizado el clic, y luego comparando esa posicion con el metodo rowAtPoint() obtener la fila en la que se ha clicado.

En el constructor:
Código:
tabla.addMouseListener(new MouseAdapter());
Fuera del constructor:
Código:
public void MouseClicked(MouseEvent e){
   int row = tabla.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. */

   fieldNombre.setText(tabla.getValueAt(row, 0));
   fieldApellido.setText(tabla.getValueAt(row, 1));
}
Ese codigo te ha de funcionar. Un saludo!
  #5 (permalink)  
Antiguo 20/03/2011, 18:10
Avatar de leocente  
Fecha de Ingreso: diciembre-2009
Mensajes: 62
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: ¿Seleccionar filas en JTable?

Gracias javiDp, tu codigo me ha sido muy util.
No se me habia ocurrido, saludos!

Y gracias de verdad
  #6 (permalink)  
Antiguo 22/06/2012, 09:53
 
Fecha de Ingreso: junio-2012
Mensajes: 3
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: ¿Seleccionar filas en JTable?

Cita:
Iniciado por sivadmp Ver Mensaje
hola Leocente

primero tienes que obtener la fila seleccionada

Código java:
Ver original
  1. int row = table.getSelectedRow();

de esta fila seleccionada tienes que obtener sus valores

Código java:
Ver original
  1. String id=table.getValueAt(row, 0).toString();
  2. String name=table.getValueAt(row, 1).toString();

luego adicionar los valores a los textField's

Código java:
Ver original
  1. txt_id.setText(id);
  2. txt_name.setText(name);
Saludos! me ha servido lo que has escrito. Yo tenia el mismo problema. No se si puedes ayudarme con un problema subsiguiente:

ahora lo que necesito hacer es que se rellenen los campos al oprimir las teclas de navegacion arriba y abajo. Intente hacerlo con el evento KEYPRESSED de la grilla y alli meti lo que dijiste el grilla.getSelectedRow(), pero me da la fila seleccionada actual, no la siguiente (o anterior dependiendo de que tecla de navegacion se presione).
  #7 (permalink)  
Antiguo 23/04/2013, 11:47
 
Fecha de Ingreso: abril-2013
Mensajes: 2
Antigüedad: 11 años
Puntos: 0
Respuesta: ¿Seleccionar filas en JTable?

Gracias amigo, a mi también me sirvio
  #8 (permalink)  
Antiguo 26/01/2014, 22:38
 
Fecha de Ingreso: diciembre-2012
Mensajes: 53
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: ¿Seleccionar filas en JTable?

Muy bueno gente, a mi tambien me fue de mucha ayuda

Muchas gracias!
  #9 (permalink)  
Antiguo 01/12/2014, 11:33
Avatar de RickHerrera  
Fecha de Ingreso: noviembre-2014
Mensajes: 13
Antigüedad: 9 años, 5 meses
Puntos: 0
Pregunta Respuesta: ¿Seleccionar filas en JTable?

yo necesito hacer lo mismo pero utilizo netbeans y pruebo los codigos y ninguno me sirve abra otra forma de hacer eso?
  #10 (permalink)  
Antiguo 09/12/2014, 15:16
Avatar de Hyemin  
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: ¿Seleccionar filas en JTable?

Cita:
Iniciado por RickHerrera Ver Mensaje
yo necesito hacer lo mismo pero utilizo netbeans y pruebo los codigos y ninguno me sirve abra otra forma de hacer eso?
Que error te da? yo estoy usando NetBeans y este ejemplo me funciono perfecto
  #11 (permalink)  
Antiguo 27/04/2016, 12:33
 
Fecha de Ingreso: abril-2016
Mensajes: 1
Antigüedad: 8 años
Puntos: 0
Respuesta: ¿Seleccionar filas en JTable? Netbeans

import javax.swing.table.DefaultTableModel;//Ocupas Importar esta libreria

public void DaNombre(){
DefaultTableModel m;
int Fila=jT_Nombre1.getSelectedRow(); //jT_Nombre1 es el nombre de la tabla
m=(DefaultTableModel)jT_Nombre1.getModel();

//Lo Podes Hacer de esta manera
String Nombre=jT_Nombre1.getValueAt(Fila, 0).toString();
String Apellido=jT_Nombre1.getValueAt(Fila, 1).toString();
jTF_Nombre.setText(Nombre);
jTF_Apellidos.setText(Apellido);
//jTF_NombreCompleto.setText(Nombre+" "+Apellido);

//O tambien de esta manera
jTF_Nombre.setText(jT_Nombre1.getValueAt(Fila, 0).toString());
jTF_Apellidos.setText(jT_Nombre1.getValueAt(Fila, 1).toString());

}
  #12 (permalink)  
Antiguo 31/07/2016, 20:27
 
Fecha de Ingreso: julio-2016
Mensajes: 1
Antigüedad: 7 años, 9 meses
Puntos: 0
Respuesta: ¿Seleccionar filas en JTable?

No sé si me puedan ayudar con un problema, el problema es que quiero que los registros seleccionados de un Jtable se envien por medio de un botón a una tabla de la base de datos, es decir los datos que se muestran en un Jtable son de la tabla1 y se envién por medio de un botón a una tabla2...
tengo la idea pero no se!!, soy casi nuevo en esto,
int fila = tbalumno.getSelectedRow();
//miJTable.getSelectionModel().setSelectionInterval( intPrimeraFila,intUltimaFila); seleccion de todas las filas
String cod="";
if(fila>=0){
cod=tbalumno.getValueAt(fila, 0).toString();

try {
PreparedStatement pst = cn.prepareStatement("INSERT INTO primeroa(Nombre,ApellidoP,"
+ "ApellidoM,Curp,Grado,Grupo,Edad,Sexo,"
+ "TipoSangre, Descripcion, Ntutor,"
+ "Tdireccion,Tcurp,Ttelefono, Tparentesco,"
+ "Fecha, ciclo1, ciclo2) FROM segundoa WHERE Num='"+cod+"'");

pst.executeUpdate();
mostrardatos("");
} catch (Exception e) {
}
//
}
else{
JOptionPane.showMessageDialog(null,"no seleciono fila");
}
//

Etiquetas: filas, jtable, seleccionar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:57.