lunes, 13 de octubre de 2008

Uso de JTable III - 3. Seleccionar una Fila del JTable

3. SELECCIONAR UNA FILA DEL JTABLE.

 

Hacer esto es muy sencillo, nada mas usando las funciones getSelectedRow() y getValueAt(fila, columna) del JTable.

 

Ø  getSelectedRow() devuelve un entero con el número de fila seleccionado, si se marcan varias filas, devuelve el número de la ultima fila seleccionada.

Ø  getSelectedColumn() devuelve un entero con el número de columna seleccionado.

Ø  getValueAt(fila, columna) devuelve un objeto del tipo Object con el contenido de la celda especificada. Para trabajar ese contenido solo tenemos que convertirlo al tipo de dato que queremos. Ej (String.valueOf(jTableDatos.getValueAt(1,1)) esto nos devuelve un String con el apellido que figura en la fila 1). Cabe recordar que las filas empiezan en 0.

Ejemplo:

 

Obtenemos el número de fila seleccionado

int fila=miJTable.getSelectedRow();

 

Luego con la funcion getValueAt le pasamos como parámetro la fila y el número de columna que queremos      

String valorCelda = (String) miJTable.getValueAt(fila,0);

 

Ejemplo:

 

En este ejemplo, cargue dos filas en la tabla, luego seleccione la tercera columna de la segunda fila con el valor Gutty. La ventana muestra lo siguiente:

El código encargado de sacar los datos del JTable es el siguiente:

 

private void jTableDatosMouseClicked(java.awt.event.MouseEvent evt)                                        

    {                                            

        // primero, obtengo la fila seleccionada

        int fila = this.jTableDatos.getSelectedRow();

        // luego, obtengo la columna seleccionada

        int columna = this.jTableDatos.getSelectedColumn();

        // por ultimo, obtengo el valor de la celda

        String dato = String.valueOf(this.jTableDatos.getValueAt(fila,columna));

        // ahora creo la ventana que me va a mostrar esos datos

        VentanaMostrarCelda mostrarCelda = new VentanaMostrarCelda(this,true);

        // llamo al metodo en la ventana mostrarCelda encargado de mostrar los datos

        mostrarCelda.mostrar(fila,columna,dato);

        // hago visible la ventana

        mostrarCelda.setVisible(true);

    }      

 

En este caso, programe el evento mouseClicked(). Particularmente no recomiendo programar algoritmos dentro de la declaración de eventos, puesto que si queremos utilizar el mismo método, vamos a tener que volver a escribir el código y eso significa redundancia.

En la ventana que muestra los datos existe un método encargado de mostrar los datos recibidos de la ventana principal:

 

public void mostrar(int fila, int columna, String dato)

    {

        this.jTextColumna.setText(String.valueOf(columna));

        this.jTextFila.setText(String.valueOf(fila));

        this.jTextValor.setText(dato.trim());

    }

2 comentarios:

John Jairo Rios Almanza dijo...

Hola mi nombre es JOhn Jairo Ríos soy novato en esto de java y me parece muy bueno el ejemplo, es mas es el que casualmente estoy necesitando pero no me funciona...
me gustaria contar con su ayuda al respecto ...

agradesco cualquiera colaboracion al correo jojarial_2@hotmail.com

Anónimo dijo...

Hola, estoy empezando a trabajar con java swing y llevo unas cuantas horas ya para intentar sacar el valor de una celda seleccionada en un jTable. Encontré este código y al fin uno que entiendo, está muy bien explicado. Solo necesitaría que me dijeras como o donde tengo que llamar a este método para que funcione. Yo creía que sería como el event de un botón que con solo pegar el método basta, no es necesario llamarlo pero con el de la tabla que tienes aquí no funciona eso.

Saludos y gracias!