gpt4 book ai didi

java - 除非由类内的主要方法创建,否则 JFrame 不会加载所有组件

转载 作者:行者123 更新时间:2023-11-29 05:42:12 24 4
gpt4 key购买 nike

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

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

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

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

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

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

最佳答案

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

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

SwingUtilities.invokeLater(doHelloWorld);

关于java - 除非由类内的主要方法创建,否则 JFrame 不会加载所有组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17077043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com