Se creara una entrada por cada componente complejo, con el fin de exponer mediante ejemplos su funcionamiento.....iniciamos con JTable....
Que es?
Un Jtable representa una tabla de datos con sus respectivas Filas y Columnas, la información que se muestra en ella puede ser ingresada tanto por nosotros como obtenida de una base de datos...
El Ejemplo.
Para el ejemplo presentaremos una ventana de registro de usuarios donde a medida que se diligencia el formulario, se almacenan los datos en la BD, desde allí se obtendrá la información y se mostrarán los datos en 2 JTable.........
los JTable son aparentemente iguales, sin embargo la diferencia esta en la forma como los llenamos...........el primero lo llenaremos usando lógica de programación, el segundo lo llenaremos con un componente DefaultTableModel.........Este ejemplo es basado en la aplicación realizada sobre el Patrón Modelo Vista Controlador (El Script de la BD lo encuentran en esa entrada), por lo tanto usaremos parte de la lógica desarrollada.......para esta tan solo dejaremos la vista de registro, agregandole los JTable con las que vamos a trabajar....La Aplicación.Como se mencionó el ejemplo es simple, tenemos una sección de registro y una sección donde mostramos los JTable.Por cuestiones de simplicidad no aplicaremos el MVC de lleno, sin embargo seguimos usando los patrones DAO y VO para el manejo de la información, el primero para comunicarnos con la BD y el segundo para transportar nuestros datos.
En la clase Conexion tenemos los parámetros requeridos para conectarnos a nuestra BD MySql, por ultimo usamos la clase Principal para llamar a la VentanaRegistro donde presentamos la GUI y llenamos las tablas que muestran la información.Tabla Usuario Matriz de Datos.Este JTable lo llenamos aplicando un poquito de lógica de programación, uno de los constructores de la clase JTable recibe 2 argumentos, el primero es la matriz con los datos a mostrar, el segundo es un arreglo con los nombres de las columnas, por esa razón lo que hacemos es obtener los datos de la BD, almacenarlos en una lista y posteriormente pasarlos a la matriz, así como inicializar un arreglo con los encabezados para finalmente mandárselos al contructor.....
public void mostrarDatosUsandoLogica() {Tabla Usando Table Model
String titulos[] = { "Codigo", "Nombre", "Edad", "Profesión","Telefono" };
String información[][] = obtieneMariz();// obtenemos la informacion de la BD
mitabla1 = new JTable(información, titulos);
mitabla1.setEnabled(false);
mitabla1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
mibarra1.setViewportView(mitabla1);
}
private String[][] obtieneMariz() {
PersonaDao miPersonaDao = new PersonaDao();
/**
* llamamos al metodo que retorna la info de la BD y la almacena en la
* lista
*/
ArrayList< PersonaVo > miLista = miPersonaDao.buscarUsuariosConMatriz();
/**
* como sabemos que son 5 campos, definimos ese valor por defecto para
* las columnaslas filas dependen de los registros retornados
*/
String informacion[][] = new String[miLista.size()][5];
for (int x = 0; x < informacion.length; x++) {
informacion[x][0] = miLista.get(x).getIdPersona() + "";
informacion[x][1] = miLista.get(x).getNombrePersona() + "";
informacion[x][2] = miLista.get(x).getProfesionPersona() + "";
informacion[x][3] = miLista.get(x).getEdadPersona() + "";
informacion[x][4] = miLista.get(x).getTelefonoPersona() + "";
}
return informacion;
}
Este JTable a nivel visual es igual que el anterior, sin embargo la diferencia radica en la forma de obtener los datos, aqui usamos un constructor sin argumentos y un objeto de tipo DefaultTableModel el cual nos permite definir la forma como llenamos la tabla, tanto en el caso de los encabezados como en la información....... de esta manera el llenado de los datos se realiza directamente por medio del objeto model que se envia como parametro al metodo que consulta la BD....
private void mostrarDatosConTableModel() {
DefaultTableModel model;
model = new DefaultTableModel();// definimos el objeto tableModel
miTabla2 = new JTable();// creamos la instancia de la tabla
miTabla2.setModel(model);
model.addColumn("Nº Documento");
model.addColumn("Nombre");
model.addColumn("Edad");
model.addColumn("Profesión");
model.addColumn("Telefono");
miTabla2.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
miTabla2.getTableHeader().setReorderingAllowed(false);
PersonaDao miPersonaDao2 = new PersonaDao();
/**
* enviamos el objeto TableModel, como mandamos el objeto podemos
* manipularlo desde el metodo
*/
miPersonaDao2.buscarUsuariosConTableModel(model);
miBarra2.setViewportView(miTabla2);
}
Con esta tabla vemos que podemos utilizar otros elementos compatibles con el componente JTable que nos pueden ahorrar muchas lineas de código, en este caso comparandolo con el anterior nos ahorra un método con un proceso de mas para obtener el mismo resultado.....
Y Listo!!!! Con eso terminamos el ejemplo, los invito a descargarlo y validar su funcionamiento...........espero que les pueda servir!!!!
Descarga!!!
El ejemplo es muy simple, sin mayores complicaciones, aquí dejo el enlace de descarga por si lo quieren revisar ;)..... recuerden que es gratis, y nada cuesta opinar, compartir o agradecer :)
También te podría Interesar.
- ¿Eclipse Vs Netbeans?
- Trabajando con SVN desde Eclipse ...... Algunos Conceptos
- Configuración Ambiente de Desarrollo... Descarga de Eclipse
- Instalando el Plugin JBoss Tools En Eclipse
- Menús Con Java Swing.
- Clases en Java
- Clases Abstractas
¿Hay algo que quieras anexar o comentar sobre esta entrada? no dudes en hacerlo.....y si te gustó...... te invito a compartir ;)