java - MĂșltiples hilos Swing de despacho de eventos
multithreading modal-dialog (3)
Estoy un poco confundido por tu pregunta, porque mencionas a Swing pero luego dices que estás escribiendo un plugin de Eclipse. Dado que la pregunta está etiquetada Swing, daré una respuesta Swing (pero publicada como CW).
Hay un hilo de envío de evento. Siempre hay un hilo de envío de evento, a menos que no haya ninguno. No puedes crear otro.
Sin embargo, puede cambiar el ModalityType
de sus cuadros de diálogo o cambiar el ModalExclusionType
de una ventana. En este caso, si estuviera escribiendo esto usted mismo, establecería ModalExclusionType
de su ventana de nivel ModalExclusionType
en APPLICATION_EXCLUDE
.
Pero, de nuevo, no veo cómo esto podría ayudarte, ya que Eclipse usa SWT en lugar de Swing.
Me gustaría crear un nuevo hilo de envío de eventos en Swing, y tengo problemas para encontrar referencias en línea sobre cómo hacerlo. He hecho esto en .NET creando un nuevo hilo y llamando a Application.run (...). ¿Alguien ha hecho esto? ¿Es posible en Swing?
FYI el motivo por el que trato de hacer esto es porque estoy escribiendo un complemento de Eclipse, y me gustaría mostrar cuadros de diálogo que no son modales para el IDE pero que son modales (de bloqueo) para mi lógica de UI. Podría lograr esto usando diálogos no modales y devoluciones de llamadas, pero eso requiere la sobrecarga de hacer que mi código tenga múltiples subprocesos. Volveré a eso si lo primero no es posible.
Voy a juntar mi última respuesta y comenzar de nuevo.
En SWT, puede crear Shell
(ventanas) o cuadros de Dialog
personalizados que son modales solo para el padre pasando el indicador de estilo SWT.PRIMARY_MODAL durante la creación.
Tenga en cuenta que Dialog
es una clase abstracta, por lo que tendrá que crear la suya propia. Probablemente sea más fácil usar Shell
.
Editar:
¿Por qué SWT? Porque eso es lo que usa Eclipse. Consulte: Guía del desarrollador del complemento Eclipse Platform (PDF comprimido) para obtener más información. La versión más reciente está disponible en el sistema de Ayuda de Eclipse (Ayuda> Contenido de la Ayuda> Guía de entorno de desarrollo de complementos).
Si es posible. He hecho una lógica de hilos de envío EDT múltiple en Swing. Sin embargo, el resultado neto fue que no funcionó de manera confiable.
(a) Todas las JVM no funcionan bien con múltiples subprocesos EDT (problemas de sincronización en lógica de representación gráfica en código nativo y tal, IBM JVM falló con múltiples subprocesos EDT, Sun JVM y Apple JVM sí funcionaron)
(b) La lógica de representación de oscilación tiene pocos errores que provocan errores de representación aleatorios (por ejemplo, http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6727829 ).
De todos modos, hacer esto requiere básicamente establecer dos AppContexts, cada uno con su propio hilo EDT.