Al mostrar un JPopupMenu se me bloquea el applet

Undermind
25 de Noviembre del 2003
Hola! ¿Alguien puede ayudarme y decirme por qué puede pasarme esto?

Tengo un JPanel dentro de un JScrollPane en un JApplet. A este panel interior le añado un MouseListener para crear un popup cuando se pinche con el botón derecho del ratón. Pues bien, cuando se pincha en el panel, el applet se bloquea en la función

popup.show(this,e.getX(),e.getY());

Donde "this" es el panel interior del scrollpane.

El caso es que cuando paro la ejecución del resto de los threads del applet de repente se me abren popups tantas veces como había pinchado en el panel. Por esto parece que los eventos se quedan como a la espera de algo, pero no sé qué es.

También he comprobado que si llamo a la función con argumento null

popup.show(null,e.getX(),e.getY());

todo funciona correctamente, pero claro, el popup aparece perdido por la pantalla y es dificil de encontrar.

Buf, espero haberme explicado bien. ¿Alguien tiene alguna remota idea de lo que puede estar pasando?

Edgar
25 de Noviembre del 2003
La verdad no entendi muy bien pero intenta ajustar las prioridades de tus hilos y/o definir los hilos como demonios.

Undermind
25 de Noviembre del 2003
Gracias a los dos por contestar. No consigo que me aparezca el menú, y ya no sé qué más hacer. Ya había probado a crear un nuevo thread para hacerlo aparecer, pero no funciona. Y si este nuevo thread lo llamo con invokeLater() tampoco.

Creo que el problema está en: el argumento que le paso a la función de crear el menú de popup, es un panel con una función paint() definida por mí.
Además el popup se crea desde el thread de repintado de Swing, ya que se crea al pinchar en el panel con el ratón.
Es decir, que al pinchar con el ratón, se llama a la función de crear el menú, y además en algún momento también se llama a la función de repintado creada por mí. Creo que esta es la causa de que la aplicación se quede bloqueada.
El caso es que aparte de esto, existe un único thread más en la aplicación: uno que se encarga de escuchar un socket. Pues bien, cuando paro este thread, el menú se muestra sin ningún problema.

Estoy empezando a pensar que quizá sea un bug o algo así de java, porque esto parece de magia. Gracias otra vez por la ayuda.

Undermind
25 de Noviembre del 2003
Bueno, aunque parezca increíble, al final he resuelto el problema sustituyendo el JPopupMenu por un JOptionPane.... Sé que visualmente no es lo mismo, pero así no se me produce ningún tipo de problema... Increíble pero cierto. Aún así, me encantaría saber por qué pasan este tipo de cosas en Java. ¿Alguien tiene alguna remota idea?

Saludos.

Undermind
25 de Noviembre del 2003
Acabo de leer que a veces Swing tiene problemas cuando se tienen múltiples threads, ya que algunos de ellos se bloquean... ¿alguien sabe algo sobre esto?