Solución propuesta al ejercicio
La clase GrabarDatos se resolvió anteriormente, por lo que solo revisamos la clase PantallaPeticion
En esta ocasión, hemos hecho que la clase herede de JFrame e implemente ActionListener, por lo que no será necesario crear un JFrame, porque ella lo es:
Definición de campos y constantes
Constructor
La clase configura la pantalla, y el resto lo hace atendiendo a eventos
ConfigurarVentana
Recordad, la clase es JFrame, por lo que utilizamos métodos heredados para poner título (42), conseguir su contenedor (43), configurar botón de salida (44), establecer tamaño y auto centrar la pantalla
En 46 y 47, establecemos el layout como SpringLayout, para permitir un control preciso de posicionamiento
De la 49 a la 60, vamos creando componentes, configurándolos, y a los dos botones, les suscribimos como Listener esta misma clase (hemos implementado ActionListener)
De la 71 a la 76, Añadimos todos los componentes y de la 79 a la 88, damos las coordenadas de cada uno. No siempre utilizo las paredes del contenedor; es muy útil relacionar un componente con otro próximo.
Tratamiento de eventos
Cada vez que alguien pulse un botón, se llamara a este método, ya que hemos registrado esta clase como Listener.
Lo primero que necesitamos hacer, es saber que botón se ha pulsado. En la 98 conseguimos el botón pulsado (source del evento) y obtenemos el nombre que asignamos al crearlo.
Si se trata del botón de enviar, se llama al método addToRow, que filtra el dato y si es correcto nos lo añade al JTable, luego, forzamos un refresco de la JTable (102) y borramos el contenido del cuadro de texto (103)
Haya habido error o no, posicionamos el foco encima del cuadro de texto para que se corrija, si ha habido error, o para que se entre otro (estará en blanco) si ha ido bien.
Si se trata del botón de grabar, obtiene los datos de JTable (108) y los envía al método grabar (109), al finalizar, cierra el programa
addToRow
Extrae el texto entrado de la JTextArea (119), y si la longitud es correcta, crea un array de dos elementos, le pone el contador en uno, y el texto recuperado en el otro y lo añade a JTable, a través de su modelo. Si la longitud está mal, presenta un mensaje (127) y vuelve por falso
leerDatos(JTable)
Primero comprueba que le hayan pasado un objeto, y luego consigue el número de filas (142) y columnas (143)
Inicializa un array de salida con las longitudes encontradas (144)
De 145 a 149 es un doble bucle for para recorrer todas las filas y todas las columnas, e irlas guardando en el array
Luego ya solo queda devolverlo.
grabar()
Este método recibe el array con todo el contenido del JTable
Crea la instancia de GrabarDatos (159)
Llama al método prepara (160) para que GrabarDatos solicite el fichero, y lo abra. Si vuelve por true, recorre todo el array grabando el contenido de la columna 1 que es donde está el nombre del usuario
El método que crea, es el main
Instancia la pantalla y la hace visible.