Pregunta

Estoy desarrollando la aplicación Swing, y todo funciona bien por lo general. Pero tengo un problema de GUI.

Cuando ejecuto la aplicación y, por ejemplo, minimizo alguna otra ventana, mi aplicación todavía funciona, pero la parte central de JFrame es invisible u oculta. Después de terminar una parte de la lógica del programa, la GUI se vuelve a pintar y se vuelve a ver. Esto continuará hasta que el programa termine de ejecutarse.

¿Hay alguna API para prevenir este comportamiento, o alguna clase para forzar la GUI visible, o tal vez para agregar alguna barra de progreso?

Si alguien necesita esta información, lo estoy probando en Windows Vista, con java 1.6.

¿Fue útil?

Solución

Me parece que está haciendo algún tipo de E / S lenta o cálculos que hacen que su GUI deje de responder.

Lo que debe hacer es realizar los procesos de larga ejecución en otro hilo.

La forma estándar de hacerlo es con un SwingWorker clase.

Los tutoriales de Java tienen excelentes recursos y tutoriales en cómo usar correctamente el SwingWorker .

Aquí y here es un enlace a otra pregunta que creo que puede ser similar.

Este comportamiento que está viendo es el resultado de su proceso de larga ejecución que bloquea el hilo que la GUI usa para volver a pintar. Por lo tanto, mientras se realiza su tarea, la GUI no puede volver a pintar su JFrame y deja de responder.

Otros consejos

Al igual que jinguy dice que lo más probable es que esté haciendo una tarea que lleva mucho tiempo completar y que debe colocarse en un hilo de fondo. Eche un vistazo al Java Sun Concurrencia en Swing Tutorial para obtener más información sobre cómo hacer esto correctamente.

Parece que necesita realizar sus operaciones comerciales de larga duración en un hilo separado. Le sugiero que use un SwingWorker .

Compruebe este simple ejemplo .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top