1

我正在努力找出为什么以下方法在某些情况下不起作用:

public static void main(String[] str) {
    new Window(new DatabaseManager());
}

我在两个类中运行这个确切的代码,得到两个不同的结果。当我从Window班级本身运行它时,它可以完美运行。当我从另一个类运行它时,它不会加载我所有的窗口组件。

这是一些与内存相关的问题吗?我试图为 Window 对象分配一个变量名,但无济于事。如果需要,我很乐意进一步解释。

Window是一个 JFrame,以防万一。(它内部有许多组件,这些组件是由一种需要大量处理能力(加载图像)的奇怪算法添加的。)

编辑 无论如何我可以给 EDT 更多时间来处理请求吗? EDIT2 好的,所以我所做的是,我决定在Window课堂上做所有事情(我在那里制作了 main 方法),因为它工作得很好。我还有很多东西要学习关于我还不够熟的线程。现在一切都很好:)

4

1 回答 1

3

在您的主要方法中尝试以下操作(事件调度线程 + setVisible)

Runnable doHelloWorld = new Runnable() {
     public void run() {
         Window w = new Window(new DatabaseManager());
         w.pack();
         w.setVisible(true);
     }
 };

 SwingUtilities.invokeLater(doHelloWorld);
于 2013-06-12T23:37:14.227 回答