我写了一个程序,它显示了一个 JFrame
,其中包含有关运行它的机器的信息(HOST
和 IP
),它使 JDBC
连接显示其他信息。
我的 main
函数中只有这两行:
NewFrame nf = new NewFrame(); //Here I make all the needed calculations
nf.setVisible(true);
(NewFrame 扩展了 JFrame)
在构造函数中,我执行所有需要的计算并将它们设置为显示在 nf JFrame
中。
当我运行程序时,我看到 JFrame
的border 0.5-1 秒后才被信息填满,尽管我将其设置为仅在构建后可见。
这是我看到的大约 1 秒:(里面是我的桌面背景)
然后我看到信息:
尽管我在构造函数中进行了所有计算,但为什么会发生这种情况?
最佳答案
听起来你在阻塞事件调度线程 (EDT)
您应该避免在 EDT 上运行任何可能阻塞或耗时的操作。这将阻止 EDT 调度重绘事件,这很重要。
您可能想看看 Concurrency in Swing可能是Swing Worker
处理 Swing 和 Threads 时的重要规则之一,您必须仅从 EDT 内部与 Swing 组件交互
关于java - 在 JFrame 上延迟显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14829554/