Pregunta

En un JDialog, cuando el usuario hace clic en un JButton quiero para ejecutar acciones GUI 2 en el EDT:

  1. Mostrando otra pequeña JDialog con un icono de ocupado en ella para indicar al usuario "Por favor, espere mientras que los extremos proceso equivocado".
  2. Inserción de un gran número de registros en un JTable.

Cuando intento ejecutar ambas acciones el "por favor espere" bloques de diálogo del proceso de inserción, como se esperaba.

Como se puede ver que ambas acciones se debe hacer de manera EDT ... ¿hay una solución para esto?

¿Fue útil?

Solución

No, ambas acciones no deben ser ejecutados en el EDT.

Sus registros no debe ser insertado en el JTable, sino más bien en su TableModel, desencadenando eventos de actualización. De esta manera, usted puede fácilmente haber actualizado la tabla mientras se muestra el cuadro de diálogo.

Una vez que se actualiza el modelo de tabla, se disparó un evento para garantizar tabla se repintado, y funcionará.

Otros consejos

La segunda cosa no tiene que ser hecho en el EDT. Engendro de un hilo para agregar los elementos al modelo de la JTable, pero tienen que utilizar hilo de vez en cuando SwingWorker.invokeLater () para disparar "fireTableDataChanged" eventos.

La mayoría de TableModels, por ejemplo, el DefaultTableModel, invocar los métodos fireXXX tan pronto como el modelo se actualiza de modo que sí desea que la actualización del modelo que hacer en la EDT lo que la tabla se repintó correctamente.

  

"Por favor espere mientras el proceso equivocado   extremos".

Utilizar un indeterminada JProgressBar

A continuación, se puede actualizar el modelo que se desee sin que el bloqueo.

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