Si necesitas un código de programación en específico, escríbeme al formulario de contacto.

BUSCA TU CÓDIGO


BUSCA MÁS CÓDIGOS DE PROGRAMACIÓN AQUÍ:

▷ Código JAVA: Seleccionar registro de un JTable y mostrarlo en los campos de un formulario


Código JAVA anterior: 
Llenar e imprimir un Array.
-------------------------------------------------------------------------------------------
Este post está orientado a la aplicación e implementación de un fragmento de código JAVA, que nos permitirá seleccionar un registro de nuestra tabla (JTable), y posteriormente mostrarlo con detalle en cada campo (jTextField, ComboBox, jTextArea, etc...) de nuestro formulario JAVA:

Método del botón VER:
private void btnVerActionPerformed(java.awt.event.ActionEvent evt) {                                       
      
     int filaseleccionada;

     try{
     
         filaseleccionada= tblDatos.getSelectedRow();
         
         if (filaseleccionada==-1){
         
             JOptionPane.showMessageDialog(null, "No se ha seleccionado ninguna fila");

         }else{

             DefaultTableModel modelotabla=(DefaultTableModel) tblDatos.getModel();
           
             String codigo=(String)modelotabla.getValueAt(filaseleccionada, 0);
             String nombres=(String) modelotabla.getValueAt(filaseleccionada, 1);
             String apellidos=(String)modelotabla.getValueAt(filaseleccionada, 2);
             String email=(String)modelotabla.getValueAt(filaseleccionada, 3);
             String celular=(String)modelotabla.getValueAt(filaseleccionada, 4);
             String direccion=(String)modelotabla.getValueAt(filaseleccionada, 5);
             String ciudad=(String)modelotabla.getValueAt(filaseleccionada, 6);

          
             txtNombrecontacto.setText(nombres);
             txtApellidoscontacto.setText(apellidos);
             txtEmail.setText(email);
             txtCelular.setText(celular);
             txtDireccion.setText(direccion);
             cboxCiudad.setSelectedItem(ciudad);


          }

       }catch (HeadlessException ex){

             JOptionPane.showMessageDialog(null, "Error: "+ex+"\nInténtelo nuevamente", " .::Error En la Operacion::." ,JOptionPane.ERROR_MESSAGE);

       }     
        
        
}


Instrucciones y Recomendaciones 

1-Copia y pega el código resaltado en color azul, dentro del método del botón desde el cual una vez seleccionado tu registro en la tabla, quieras ejecutar el código que te permitirá mostrar cada dato de este en los distintos campos del formulario.





2-En primer lugar, lo que procederás a realizar será crear una variable del tipo int (entero), la cual hemos llamado "filaseleccionada":
int filaseleccionada; 
3-Estableceremos un bloque "try{}catch(){}", que nos permitirá controlar la ejecución de nuestro código en caso de presentarse algún inconveniente y/o error.
En el "catch", vamos a capturar una excepción del tipo "HeadlessException", y cuyo uso según la documentación de Java se determina así:
"
Se lanza cuando el código que depende de un teclado, la pantalla, o el ratón se llama en un ambiente que no sea compatible con un teclado, la pantalla, o el ratón.", en el caso dado de que se produzca la excepción, esta será almacenada en una variable que hemos llamado "ex":
try{}catch (HeadlessException ex){
}
4-Ahora, el siguiente paso es capturar la fila y/o registro del jTable, que ha sido seleccionado por el usuario. Para ello, hacemos uso de la variable "filaseleccionada" creada anteriormente (punto 2), empleamos el signo "=" (igual) y seguidamente llamamos a nuestro componente jTable al cual le hemos colocado el nombre de "tblDatos", y estaremos aplicándole el método ".getSelectedRow()": 
filaseleccionada= tblDatos.getSelectedRow();
5-Haremos uso de un condicional "if(){}else{}".
La condición que estableceremos en el "if", es verificar si el contenido de la variable "filaseleccionada" es "-1"; esto quiere decir, que no ha sido seleccionado ningún registro de la tabla por parte del usuario que maneja el software: 

if (filaseleccionada==-1){
}else{
}
6-En el caso de que se cumpla la condición establecida en el "if" (punto anterior), se le mostrará un cuadro de diálogo al usuario, donde se le advertirá e informará que no ha sido seleccionada ninguna fila de la tabla. Para esto, debemos hacer uso del componente "JOptionPane":

JOptionPane.showMessageDialog(null, "No se ha seleccionado ninguna fila");

7-En el dado caso de que no se cumpla la condición que establecimos en el "if", procederemos a ubicarnos dentro de las llaves de apertura y de cierre "{}", del "else".
En la primera sección del fragmento de código que emplearemos, lo que se hace es crear un objeto del tipo "DefaultTableModel" y que llamaremos en este caso "modelotabla"; luego, implementamos el signo "=" (igual) y posterior a este vamos a llamar a nuestra tabla (jTable) llamada "tblDatos" y se le aplica el método ".getModel()", lo cual nos devolverá un valor del tipo "TableModel"; sin embargo, si dejamos esto así nos producirá un error, ya que no sería compatible con el objeto en el que lo estamos almacenando, por ello usaremos la palabra "DefaultTableModel" entre paréntesis "()" para realizar la conversión del tipo de valor.








En la siguiente sección, se procederá a instanciar distintas variables de tipo "String", esto con el fin de almacenar un valor determinado (columna - campo) del registro seleccionado; posterior al signo "=" (igual), usaremos el objeto "modelotabla" y le asignaremos el método ".getValueAt()" que nos permitirá obtener el valor de una determinada celda; es por ello, que debemos pasarle 2 parámetros, el primero consiste en especificar la fila en la que se encuentra el registro seleccionado; por tal motivo, hacemos uso de la variable "filaseleccionada" (punto 2) y luego colocaremos el número de la columna en la cual se encuentra dicho valor (teniendo en cuenta que la numeración de columnas en un jTable comienza desde cero "0"). Para no tener inconvenientes a la hora de almacenar el valor en la variable, deberemos realizar la conversión del tipo de valor, por lo cual al lado del signo "=" (igual), colocaremos entre paréntesis "()" la palabra "String".

En la última sección del código que va dentro del "else", procederemos a asignar y/o mostrar en cada campo, el valor que le corresponde.
Para esto, llamamos al componente donde hemos de mostrar la información, por ejemplo un jTextField llamado "txtNombrecontacto" al cual le aplicamos el método ".setText()" que nos permitirá asignarle un contenido y/o texto, por lo cual debemos pasarle un parámetro que en este caso será la variable que corresponda a dicho valor, la cual sería en este caso "nombres":

DefaultTableModel modelotabla=(DefaultTableModel) tblDatos.getModel();
           
String codigo=(String)modelotabla.getValueAt(filaseleccionada, 0);
String nombres=(String) modelotabla.getValueAt(filaseleccionada, 1);
String apellidos=(String)modelotabla.getValueAt(filaseleccionada, 2);
String email=(String)modelotabla.getValueAt(filaseleccionada, 3);
String celular=(String)modelotabla.getValueAt(filaseleccionada, 4);
String direccion=(String)modelotabla.getValueAt(filaseleccionada, 5);
String ciudad=(String)modelotabla.getValueAt(filaseleccionada, 6);

          
txtNombrecontacto.setText(nombres);
txtApellidoscontacto.setText(apellidos);
txtEmail.setText(email);
txtCelular.setText(celular);
txtDireccion.setText(direccion);
cboxCiudad.setSelectedItem(ciudad);

8-Para terminar, dentro del bloque "catch(){}" haremos uso del componente "JOptionPane", con el fin de mostrarle al usuario un cuadro de diálogo donde se le informe de cualquier error que haya ocurrido a la hora de intentar mostrar los datos del registro seleccionado en el jTable: 



}catch (HeadlessException ex){

   JOptionPane.showMessageDialog(null, "Error: "+ex+"\nInténtelo nuevamente", " .::Error En la Operacion::." ,JOptionPane.ERROR_MESSAGE);

}

9-Ahora sólo basta con ejecutar tu proyecto y hacer las respectivas pruebas.

¡NOTA IMPORTANTE!: 
En el caso dado, de que lo que quieras es que cuando se dé clic sobre un determinado registro de la tabla, y de forma inmediata se muestren sus datos en el formulario sin necesidad de dar clic en un botón, deberás asignarle a tu jTable un evento del tipo "Mouse Listener", más exactamente el método "mouseClicked()", y posteriormente copias y pegas el código resaltado en azul, dentro de dicho método.
Si quieres aprender y tener claro de cómo hacerle para asignar este tipo de eventos (mouseClicked, etc...) a tu tabla, puedes dar clic aquí para ver cómo hacerlo usando NetBeans IDE, o haces clic aquí para ver cómo hacerlo usando netamente código.








¿Quieres aprender más de JAVA?
Si deseas ver otros temas muy interesantes, no te olvides de revisar los tips de JAVAseguir el Curso: Cómo lo hago en JAVA?

Accede a todos los fragmentos de código que hemos publicado en este lenguaje hasta el momento, dando clic en el siguiente enlace:

Ver listado de códigos JAVA

Suscríbete a nuestro blog, vía Email o RSS; además puedes seguirnos a través de nuestras redes sociales como: Facebook, Twitter, y Google+.

¿Conoces una forma más óptima de realizar el anterior procedimiento?, no dudes en compartir tu conocimiento con todos nuestros amigos de la web.

Si te fue de gran ayuda esta información, no olvides compartirla con tus amigos y en las redes sociales.
Si tienes dudas o sugerencias al respecto; puedes dejarnos tus comentarios.
Bendiciones...





Comparte este código


11 comentarios:

  1. Bendiciones Eduardo,

    me gustaria preguntarte si se puede hacer un jtable editable con pòputs y los cambios se reflejen en la base de datos como eliminar modificar.

    de antemano muchas gracias por tus enseñanzas tan loables y precisas.

    ResponderEliminar
    Respuestas
    1. Amén mi hermano Roberto Carlos, la Gloria y la Honra sean para Dios, que es el que nos da la sabiduría para realizar cada cosa.

      Todo lo que me comentas es posible.
      Lo primero que debes realizar, es aplicar el Pop Up a tu jtable; luego, a cada ítem del pop up, deberás asignarle un evento "Actionperformed", y dentro del evento usarás un método parecido al del presente post para determinar la fila seleccionada y dependiendo de ello escoges la información que te permitirá realizar las operaciones que necesitas (Modificar, Eliminar, etc.)

      Recursos:

      *Agregar un pop up al jTable -> Aún no tengo este material publicado, pero trataré de hacerlo esta semana.

      *Asignar un evento a un componente del formulario:

      Usando NetBeans -> http://uh-tis.blogspot.com/2015/01/java-tips-establecer-y-aplicar-eventos-a-los-botones-y-demas-elementos-de-un-formulario.html

      Usando sólo código -> http://codigosparadesarrolladores.blogspot.com/2015/01/codigo-java-asignar-eventos-a-un-jbutton-jcombobox-y-jtextfield.html

      *Detectar el registro que se ha seleccionado en un jTable-> El presente post te servirá para realizar este procedimiento.

      Cualquier duda estaré atento.

      Bendiciones...

      Eliminar
    2. Saludos estimado Roberto, aquí te dejo el enlace al artículo donde explico cómo agregar un Popup a una tabla:
      http://codigosparadesarrolladores.blogspot.com/2015/02/codigo-java-agregar-popup-a-un-jtable.html

      Eliminar
  2. amigo muchas gracias te doy un 100 muy excelente aporte

    ResponderEliminar
    Respuestas
    1. Saludos estimado Alejandro Alarcon.
      Muchas gracias por tu comentario, es un gusto saber que te haya sido gran utilidad este código java que hemos publicado.
      Esperamos que compartas el presente post de nuestro blog en tus redes sociales.

      ¡CRISTO TE AMA!

      Bendiciones...

      Eliminar
  3. Hermano la verdad se te da muy fácil enseñar, como he aprendido con tus videotutoriales, guías, una lastima que no subieras más aportes porque de verdad son de gran ayuda, lo que no he podido entender en otras 8 guías aquí lo he entendido.

    Saludos y mil gracias

    ResponderEliminar
    Respuestas
    1. Saludos estimado Charles Mourre, es un gusto saber que este sitio y los recursos de programación aquí compartidos te hayan sido de gran ayuda.

      Quiero decirte que muy pronto estaremos nuevamente compartiendo contenido fresco, para así poder seguir ayudando a colegas programadores como tú.
      Gracias por tus comentarios.

      ¡JESUCRISTO ES TU SALVADOR!
      ¡CRISTO TE AMA!

      Bendiciones mi amigo...

      Eliminar
  4. Hola, no me muestra el registro en el combobox :S

    ResponderEliminar
    Respuestas
    1. Saludos estimado Lucas, en el caso del JCombobox si este no es Editable, el registro que intentes mostrar en este componente deberá concordar con uno de sus Ítems, teniendo en cuenta las letras Mayúsculas, Minúsculas, y espacios en blanco.

      En otras palabras:

      Si en tu JComboBox hay un Ítem llamado "JAVA".
      A la hora de intentar mostrar ese dato usando el método ".setSelectedItem();",
      no podrás usar las siguientes variaciones: "Java", "java", etc... sino que deberás asignar la palabra tal como está en el JComboBox, es decir: "JAVA".

      Cualquier duda déjanos tu comentario.

      ¡CRISTO VIENE PRONTO!
      ¡ÁBRELE Y ENTRÉGALE TODO TU CORAZÓN!

      Bendiciones...

      Eliminar
  5. Hola, tengo un buscador predictivo que está basado en un combobox(codigo, apellido, dni), la cosa es que quiero validar para cuando uno escriba un codigo inexistente te mandé un mensaje diciendo "que no existe".

    Agradecería tu ayuda.

    Este es el código de mi buscador:
    //BUSCAR DATOS
    protected void keyTypedTxtBuscar(KeyEvent evt) {

    //FILTRAR DATOS
    txtBuscar.addKeyListener(new KeyAdapter(){


    @Override
    public void keyReleased(KeyEvent ke){

    if(i==0){
    trs.setRowFilter(RowFilter.regexFilter("(?i)"+txtBuscar.getText(),0));

    }
    else if(i==1){
    trs.setRowFilter(RowFilter.regexFilter("(?i)"+txtBuscar.getText(),1));

    }
    else{
    trs.setRowFilter(RowFilter.regexFilter("(?i)"+txtBuscar.getText(),4));
    }


    }

    });
    trs = new TableRowSorter(modelo);
    tblTabla.setRowSorter(trs);



    }

    ResponderEliminar
  6. Muchas gracias funciono perfectamente

    ResponderEliminar