En una aplicación de GUI Java "grave", tendrá modelos detrás de muchos de sus elementos GUI: A DocumentModel
respaldando un JEditorPane
, por ejemplo, o un ListModel
detrás de un JList
.¿Está bien cambiar un modelo fuera del hilo de trabajo Swing?
Siempre nos dicen que no hagamos cambios en la GUI desde fuera del hilo de trabajo Swing y le damos SwingUtilities.invoke...()
para solucionar eso. Bien, puedo vivir con eso! Sin duda es necesario (y funciona bien) al cambiar los atributos de los componentes de la GUI directamente.
Idealmente, la mayoría de mis cambios GUI-visibles serán a modelos, no a JComponents, de todos modos. Pero debido a que son visibles en la GUI, ¿"cuentan" como cambios en la GUI? Es decir. ¿Cambian los eventos y los oyentes proporcionan el desacoplamiento necesario, o los cambios del modelo también deben ser envueltos en invoke...()
?
Probablemente viejo sombrero para profesionales de Swing, pero no pude encontrar ninguna referencia que indique claramente de una forma u otra.
-1: ¡No es la respuesta que quería escuchar! (Es una broma, +1) ¡Gracias! –
En cuanto a la ejecución de errores de subprocesos Swing, recomiendo este enlace: http://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html El CheckThreadViolationRepaintManager me ha ahorrado mucho tiempo. –
El texto Swing hace * algún * cambio de eventos al EDT. Por supuesto, solo hace un gran desastre. –