elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Forma en que se muestran cambios durante la ejecución
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Forma en que se muestran cambios durante la ejecución  (Leído 3,182 veces)
omaaraguirre

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Forma en que se muestran cambios durante la ejecución
« en: 29 Julio 2017, 21:05 pm »

Buen día.

Disculpen si accidentalmente no cumplo con alguna regla al momento de hacer este tema, es mi primera vez en el foro.

Tengo un frame en Java que busca en servidores (de bases de datos) los datos que tú le indiques. Tengo una jTable (parte inferior izquierda) donde se almacenan los resultados encontrados y también un jTextArea (parte derecha) que mi idea es que sirva como tipo "consola", donde se vaya registrando todo en lo que se está buscado. Para mayor comprensión les adjunto una captura de dicho frame.

En el jTextArea se agrega un renglón cada que se compara la cadena de búsqueda (mediante ciclos) con algún registro, columna o tabla. El detalle es que el jTextArea permanece en blanco hasta finalizar la búsqueda y se muestra todo de golpe. Me he percatado que es la forma "default" en la que he estado trabajando con java, ya que en todos los componentes sucede de igual manera.

Me gustaría saber cómo hacer para que en el transcurso de que se está ejecutando la búsqueda me vaya mostrando en el jTextArea renglón por renglón.

De antemano muchas gracias. Saludos!



En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Forma en que se muestran cambios durante la ejecución
« Respuesta #1 en: 30 Julio 2017, 00:57 am »

Supongo que según buscas, vas agregando el texto en el JTextArea.

Supondré que no estás utilizando threads, así que:
El problema que tienes sería que, cuando te pones a buscar en las bases de datos, dejas el JFrame sin actualizar. ten en cuenta,q ue los eventos de ratón, de actualización y de dibujado de la ventana requieren tiempo de CPU. Si consumes el tiempo en hacer otra cosa, nos e va a actualizar hasta que acabes.

La solución podría ser crear un nuevo thread en el cual harás las peticiones. De este modo, el thread inicial sigue actualizando la ventana y recibiendo eventos (con lo cual podrás seguir pulsando botones e interactuando, cuidado, probablemente necesites bloquear los botones para que el usuario no haga varias cosas a la vez que no quieras, como ejecutar 2 búsquedas a la vez).

Dicho esto, no sé si has trabajado alguna vez con concurrencia, threads... Si la respuesta es no, lo mejor es que, o dejes esto para otro momento, más adelante, o empieces un nuevo proyecto <sin ventanas> para probar los threads y hacerte a su uso.
Si ya has trabajado con threads, te dejoe ste link que te puede ayudar en la concurrencia con Swing. Es un tutorial de Oracle: https://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html


En línea

omaaraguirre

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Forma en que se muestran cambios durante la ejecución
« Respuesta #2 en: 30 Julio 2017, 05:00 am »

Supongo que según buscas, vas agregando el texto en el JTextArea.

Supondré que no estás utilizando threads, así que:
El problema que tienes sería que, cuando te pones a buscar en las bases de datos, dejas el JFrame sin actualizar. ten en cuenta,q ue los eventos de ratón, de actualización y de dibujado de la ventana requieren tiempo de CPU. Si consumes el tiempo en hacer otra cosa, nos e va a actualizar hasta que acabes.

La solución podría ser crear un nuevo thread en el cual harás las peticiones. De este modo, el thread inicial sigue actualizando la ventana y recibiendo eventos (con lo cual podrás seguir pulsando botones e interactuando, cuidado, probablemente necesites bloquear los botones para que el usuario no haga varias cosas a la vez que no quieras, como ejecutar 2 búsquedas a la vez).

Dicho esto, no sé si has trabajado alguna vez con concurrencia, threads... Si la respuesta es no, lo mejor es que, o dejes esto para otro momento, más adelante, o empieces un nuevo proyecto <sin ventanas> para probar los threads y hacerte a su uso.
Si ya has trabajado con threads, te dejoe ste link que te puede ayudar en la concurrencia con Swing. Es un tutorial de Oracle: https://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html

Iván, me funcionó, quedó perfectamente como lo necesitaba. Era cuestión de ejecutar la búsqueda mediante un thread. Muchísimas gracias!

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines