Foro de elhacker.net

Programación => Java => Mensaje iniciado por: kinos en 6 Junio 2010, 23:34 pm



Título: ¿cómo implementar un progressBar?
Publicado por: kinos en 6 Junio 2010, 23:34 pm
Buenas.

Estoy utilizando un jInternalFrame y quiero que cuando le das a la X de cerrar te salga un jDialog y te pregunta si quieres guardar y tal. Una vez que pulsas si o no, si pulsas "si" me debe lanzar una ventanita con un progressBar (JDialog). Mientras, va guardando lo que tenga que guardar... y una vez terminado de guardar se cierra el jInternaFrame.

El problema es que no consigo que me muestre el contenido del frame del progressBar (jDialog). Me sale el marco pero no lo que contiene, no sale ni el jTextArea ni el jProgressBar. Si lo pongo como modal, a true, si que se muestra pero no puedo guardar las cosas hasta que no lo cierro.

He leído que hay que iniciarlo con algo de Event dispatching thread pero no consigo nada.

Me podéis explicar algo?


Título: Re: ¿cómo implementar un progressBar?
Publicado por: Chuidiang en 13 Junio 2010, 11:50 am
Hola:

Hay un hilo de java que se encarga de pintar las ventanas. Si dibujas el progress bar en ese hilo, haces las tareas que tengas que hacer en ese hilo e incrementas el progress bar en ese hilo, no lo estás dejando libre para que pinte el progress bar y se le vea avanzar. Las tareas y el incremento del progress bar debes hacerlo en un hilo separado, que no sea directamente en el actionPerformed() de un botón o el keyListener() de teclado (en general, en ningún evento de teclado o ratón).

Una opción que da java es usar un SwingWorker http://chuwiki.chuidiang.org/index.php?title=Ejemplo_sencillo_con_SwingWorker

Si quieres ampliar un poco más esta información y ver cómo hacer la barra de progreso sin SwingWorker, echa un ojo en http://chuwiki.chuidiang.org/index.php?title=El_hilo_de_awt

Se bueno.