2

我正在编写一个运行 Ubuntu 10.10 的 Java 桌面应用程序。一切正常,除了大约十分之一,当我调用 JOptionPane.showMessageDialog(null, message) 时,对话框窗口出现但它是空的——只是标准的灰色背景。奇怪的是,有几次发生这种情况时,我能够单击“确定”按钮应该在的位置,并且成功地注册了单击。有谁知道这可能是什么原因?

4

3 回答 3

3

您是否正在显示来自Event Dispatch Thread的对话框?如果违反Swings单线程规则,可能会不时出现带有此类症状的奇怪错误。

于 2011-01-19T21:18:57.173 回答
2

您使用的是哪个 JVM?确保它不是GCJ(因为它通常是默认的 Ubuntu/Debian)。它的摇摆实现有点奇怪,并且经常会引发类似的奇怪行为。

于 2011-01-19T20:26:23.087 回答
0

我订阅了 Uhlen 的帖子。最可能的原因是您可能没有将 Event Dispatch Thread 用于 Swing 代码。例子:

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

} catch (InvocationTargetException ex) {

}
于 2011-03-25T09:40:50.227 回答