9
12-5-2015 Tutorial: Thread – Formularios y Tablas Norman Salvador Aráuz López -

Tutorial 11 JFrame Table Threads

Embed Size (px)

DESCRIPTION

Tutorial 11 JFrame Table Threads

Citation preview

Tutorial: Thread Formularios y Tablas

Nota: El presente tutorial asume que usted ya sabe cmo crear, agregar controles, formularios etc. a una aplicacin desde cero. Si usted no maneja estas temticas se recomienda primero realizar los tutoriales anteriores, y practicar continuamente para dominio de la sintaxis.En tutoriales anteriores aprendimos como sincronizar hilos en plena ejecucin, ahora aprenderemos como implementar hilo con tareas utilizando tablas, para ello crearemos el siguiente formulario con dos tablas:

La idea ser la siguiente, crearemos dos hilos, uno para cada tabla, el primer hilo se encargar de calcular e imprimir la tabla de multiplicar del nmero ingresado en el cuadro de texto, y el segundo hilo se encargar de calcular los exponentes sucesivos del nmero ingresado, a continuacin la lista de controles utilizados en este tutorial con sus nombres correspondientes:

ControlNombreTexto Inicial

LabelNo es necesarioNmero a procesar

LabelNo es necesarioTabla de multiplicar

LabelNo es necesarioTabla exponencial

JTextFieldtxtNumeroNo es necesario

ButtonbtnCalcularCalcular

TableTablaExternaANo es necesario

TablaTablaExternaBNo es necesario

Ahora inicializaremos cada tabla con un valor por defecto, para ello, desde la vista de cdigo agregaremos el siguiente fragmento de cdigo, que crear una tabla en memoria con datos iniciales para nuestras tablas, la asignacin se har como se ha aprendido en tutoriales anteriores sobre manejo de tablas:

Luego en el constructor:

Eso establecer nuestras tablas sin ninguna fila y con dos columnas con el valor de la iteracin y la respuesta obtenida del clculo:Listo! El siguiente paso ser crear los hilos que controlarn cada tabla, a continuacin desde la vista de cdigo crearemos una clase privada dentro de nuestra clase principal, a como aparece en el siguiente fragmento de cdigo:Hilo que controlar la tabla A

La idea es simple, la tabla A mostrar la tabla de multiplicar del nmero ingresado en el cuadro de texto, el for itera hasta 10 es decir, si por ejemplo el nmero ingresado en el cuadro de texto fuese 3, la iteracin dibujar la tabla de multiplicar hasta 10 de ste numero ingresado (3X1, 3X2, 3X3.. etc hasta 3X10), cada valor se va agregando a un objeto puesto que hay que agregar el valor de la iteracin es decir i adems del resultado del clculo, por cada iteracin se har un sleep de 1 segundo para ir viendo los resultados. Recuerda que Thread.sleep() genera su propio bloque try catch para el manejo de excepciones haciendo uso del asistente de cdigo.Hilo que controlar la tabla BDe igual forma crearemos el hilo para manejar la tabla B, para lo cual agregaremos el siguiente bloque de cdigo, muy similar al anterior, la idea es simple, el hilo ir elevando a la potencia segn el ndice del ciclo, es decir lo ir elevando a la i, con ayuda de la funcin Math.pow(), el resultado de la elevacin mas el valor de i se guardar en una variable tipo objeto que despus se ir agregando a la tabla B. Esto ir construyendo de fila en fila los resultados.

Creacin de los hilosEl evento que desencadenar la creacin de los hilos ser el botn Calcular, para lo cual desde la vista de diseo hacemos doble click en el botn para luego agregar las siguientes lneas de cdigo:

En este momento se comenzarn a desencadenar al mismo tiempo ambos hilos y se irn construyendo las tablas con sus correspondientes resultados, recuerda que la isntruccin star() ejecuta el mtodo run() creado en las clases de hilos (threads) anteriores. Por tanto ejecutar Star(), equivale a llamar al mtodo run().

Y listo, vemos como ambos procedimientos trabajan al mismo tiempo en hilos diferentes.