Fenêtre vide Java Ubuntu Linux

J’écris une application de bureau Java, exécutant Ubuntu 10.10. Tout fonctionne bien sauf que environ 1 fois sur 10, quand j’appelle JOptionPane.showMessageDialog (message nul), la fenêtre de dialog apparaît mais elle est vide – juste le fond gris standard. Étrangement, à quelques resockets, lorsque cela s’est produit, j’ai été capable de cliquer sur le bouton OK et il a enregistré le clic correctement. Est-ce que quelqu’un sait ce qui pourrait causer cela?

Quelle JVM utilisez-vous? Assurez-vous que ce n’est pas GCJ (comme c’est souvent le cas par défaut Ubuntu / Debian). La mise en œuvre du swing est un peu bizarre et provoquera souvent un comportement étrange comme celui-là.

Est-ce que vous affichez la boîte de dialog à partir du thread de répartition des événements ? Des bogues étranges avec des symptômes comme ceux-ci peuvent se produire de temps en temps si la règle du thread unique Swings est violée.

Je suis abonné au poste d’Uhlen. La cause la plus probable est que vous ne pouvez pas utiliser Event Dispatch Thread pour le code Swing. Exemple:

 try { EventQueue.invokeAndWait(new Runnable() { @Override public void run() { JOptionPane.showConfirmDialog(null, "Message"); } }); } catch (InterruptedException ex) { } catch (InvocationTargetException ex) { }