Etiqueta: JTable

JTable con datos de HR

Cargar datos de una base de datos en un JTable

Ya que en Acceso a Datos trabajamos con la base de datos HR, vamos a reuilizar uno de sus métodos para completar un jTable de nuestro formulario. Para ello debemos añadir en un JFrame un jTable y crearnos un modelo de datos de tipo DefaultTableModel en la clase de nuestro JFrame.

DefaultTableModel dtmModelo;

Además, dentro del método public nombreJPanel () además de llamar al método initComponents; llamaremos también a cargarTabla();

El método cargarTabla será público y no devolverá nada.

En primer lugar deberá definir el modelo DefaultTableModel para que no pueda ser editado por el usuario.

this.dtmModelo = new DefaultTableModel() {
   @Override
      public boolean isCellEditable(int fila, int columna) {
         return false; //Con esto conseguimos que la tabla no se pueda editar
      }
  };

A continuación asignamos dicho modelo a la tabla:

this.tblTabla = new JTable(dtmModelo);

Al modelo le añadimos los nombres de columnas que vamos a necesitar. En este caso, de Regiones tomaremos el ID y el nombre de la región.

this.dtmModelo.addColumn("ID");
this.dtmModelo.addColumn("Region");

Seguidamente realizamos la conexión a la base de datos HR y obtenemos, en este caso, el ArrayList de regiones que se lo asignaremos a una variable de tipo ArrayList.

Hr hr = new Hr();
ArrayList<Region> listaRegiones = hr.listarRegions();

Seguidamente hacemos un bucle para recorrer esta lista de regiones, definiéndonos una fila en la que indicaremos el número de columnas que vamos a utilizar y asignándole a las posiciones de la fila la información extraida del array. Finalmente, en cada pasada del bucle añadirmos la fila al modelo:

for (int i = 0; i < listaRegiones.size(); i++) {
   Object[] fila = new Object[2];
   fila[0]= listaRegiones.get(i).getRegionId();
   fila[1]= listaRegiones.get(i).getRegionName();
   this.dtmModelo.addRow(fila);
}

Para actualizar la información será necesario realizar el método updateUI a la tabla y a continuación ejecutar el método setViewportView del JScrollPane para actualizar la información que contiene.

this.tblTabla.updateUI();
this.scpScrollPane.setViewportView(tblTabla);

¡No olvides implementar el try-catch correspondiente! De lo contrario te dará error.