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.
A mi gusto lo suelo hacer asi siempre:
private void cargarNombre(List nombres) {
String[] titulos = {
«…»,
«…»,
«…»
};
String[][] datos = null;
if(nombres!= null) {
NumberFormat nf = NumberFormat.getCurrencyInstance();
datos = new String[nombres.size()][titulos.length];
int fila = 0;
for(Nombre n : nombres) {
Modelo m = n.getModelo();
datos[fila][0] = t.getNombre();
datos[fila][1] = t.getApellido();
datos[fila][2] = nf.format(t.getSueldo());
fila++;
}
}
DefaultTableModel dtm = new DefaultTableModel(datos, titulos);
tblNombre.setModel(dtm);
}
¡Tomo nota, Pedro! ¡Mil gracias!