除非由类中的main方法创建,否则JFrame不会加载所有组件

时间:2013-06-12 23:27:16

标签: java swing jframe jcomponent imageicon

我想把头发拉出去试图找出以下在某些情况下不起作用的原因:

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

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

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

Window是一个JFrame,如果重要的话。 (它内部有许多组件,它们通过一种奇怪的算法添加了很多处理能力(加载图像)。)

修改 无论如何,我能否让EDT有更多时间来处理请求? 的 EDIT2 好吧,所以我做的是,我决定在Window课程中做所有事情(我在那里做了主要方法),因为它完美无缺。我还有很多东西可以学习线程,我还没够熟。现在一切都很好:))

1 个答案:

答案 0 :(得分:3)

在main方法中尝试以下内容(事件调度线程+ setVisible)

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

 SwingUtilities.invokeLater(doHelloWorld);