====== JTable ====== Vamos a implementar una JTable que muestre los hilos lanzados con un contador de iteraciones por Hilo y otro contador de iteraciones totales: {{:dad:jtableee.png |}} ===== Implementación de la GUI===== Primero creamos una nueva ventana desde el Window Builder: {{ :dad:imagen_2023-09-27_232108404.png |}} A continuación insertamos la JTable en la ventana y en propiedades de esta vamos a model: {{ :dad:imagen_2023-09-27_233808670.png |}} Cuando le demos a model nos saldrá la siguiente ventana con el editor de la tabla: {{ :dad:imagen_2023-09-27_233908696.png |}} En la derecha le daremos a insertar una vez, colocaremos abajo el nombre de la columna, en este caso conteo, le daremos a insertar de nuevo y pondremos como nombre Hilos. Podemos ajustar el tamaño de las columnas abajo, en este caso la columna Hilos será de tamaño 200: {{ :dad:imagen_2023-09-27_234643271.png |}} Tras darle a aceptar, no veremos nada en donde hemos insertado la tabla, ahora le daremos click derecho al recuadro donde debería estar la tabla e iremos a Surround With y seleccionaremos JScrollPane: {{ :dad:captura_de_pantalla_39_.png |}} Tras eso tendremos algo como esto: {{ :dad:imagen_2023-09-28_000410001.png |}} Ahora que hemos terminado con la inserción de la JTable insertaremos el Botón Lanzar y la Jlabel que irá al lado del contador de iteraciones totales: {{ :dad:imagen_2023-09-28_001138559.png |}} Finalmente insertaremos un JTextField no editable para que muestre los conteos totales: {{ :dad:captura_de_pantalla_39_.png |}} ===== Implementación Funcional Simple ===== ==== Estructura Clases ==== {{ :dad:imagen_2023-09-28_120619921.png |}} ==== Variables SimpleThread ==== {{ :dad:imagen_2023-09-28_120404370.png |}} ==== Variables Tabletoida ==== ==== Hilos ==== Para implementar los hilos que lanzaremos crearemos una nueva clase a la que llamaremos SimpleThread: {{ :dad:imagen_2023-09-28_002400302.png |}} Tras esto podemos ir añadiendo la funcionalidad al botón Lanzar para que pueda lanzar Hilos: {{ :dad:imagen_2023-09-28_005528159.png |}} ==== Botón Lanzar ==== Ahora haremos que cada vez que pulsemos el botón cada hilo que arranquemos se vaya almacenando en una lista de hilos y que tras eso, vuelque esta lista de hilos a la Jtable para Rellenarla. A su vez, se sumará el valor de los campos que almacenen el conteo de iteraciones de cada hilo en una variable cuyo valor se escribirá en el JTextField que mantiene el conteo total. Hasta aquí hemos implementado la funcionalidad de forma que la tabla se actualiza cada vez que pulsemos el botón lanzar, pero no se actualiza automáticamente. {{ :dad:imagen_2023-09-28_121646811.png |}} ==== Resultado ==== Ahora la tabla se verá de la siguiente forma: {{ :dad:imagen_2023-09-28_122208010.png |}} {{ :dad:imagen_2023-09-28_122257551.png |}} ==== Sobre Actualizar la Tabla Automáticamente ==== Para actualizar la tabla automáticamente deberíamos pasar por referencia la tabla a la clase SimpleThread y utilizar el método: miTableModel.fireTableDataChanged(). ===== Implementación Funcional Compleja ===== Ahora veremos una implementación alternativa algo más compleja. Utilizaremos la misma GUI que en la anterior implementación, pero cambiarán la funcionalidad y clases. ==== Clase ModeloTabla ==== Primero implementaremos esta clase para lo que sería el model de la JTable. Aquí implementaremos métodos para contar las filas y columnas actuales de la tabla, además de un método para ir obteniendo los datos desde las lista de de hilos a partir de la fila y columna en la que estemos para rellenar la tabla. {{ :dad:imagen_2023-09-29_111927826.png |}} ==== Clase AccionBoton ==== {{ :dad:imagen_2023-09-29_120604192.png |}}