Pregunta

Hay una JTabbedPane En mi Oscilación programa. Cuando el usuario hace clic en una pestaña, el programa toma un tiempo para obtener los datos y procesar los resultados, a continuación, muestra los resultados en la ficha seleccionada.

¿Cómo puedo mostrar un reloj de arena, o algo por el efecto para que el usuario sepa que es el procesamiento de los datos? No hacer clic en la pestaña de nuevo antes de que termine su trabajo.

¿Fue útil?

Solución

A JProgressBar (posiblemente en modo indetermiante) suena bien - puesto que la lengüeta hasta que los datos han sido extraídas. Una interfaz de usuario bien diseñado no debe obligar al usuario a esperar a que las tareas de funcionamiento largo para completar y en su lugar les permite hacer algo más entre medio.

Otros consejos

La forma más sencilla es simplemente llamar setCursor en el componente adecuado (probablemente la ventana de nivel superior) con el apropiado Cursor .

component.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

Y a continuación, establezca de nuevo cuando haya terminado.

component.setCursor(Cursor.getDefaultCursor());

setCursor (int) está en desuso. Esto es probablemente un poco más limpia:

setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

Como las otras respuestas mencionan, se puede establecer un cursor de espera, pero también se menciona la prevención de clics de ratón adicionales. Puede utilizar un panel de vidrio para evitar clics en los componentes hasta que se termine la operación de largo. Además de la tutoriales Sun sobre el cristal , hay un buen ejemplo en http://www.java2s.com /Code/Java/Swing-JFC/DemonstrateuseofGlassPane.htm

lo haría como otros mencionados

  • Cambiar el cursor
  • Use un SwingWorker
  • Mostrar la progressbar o una imagen animada en el GlassPane
  • Ocultar la GlassPane cuando se haya completado la tarea
  • Restaurar el cursor por defecto
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top