java - 在 JFrame 上延迟显示

标签 java swing jframe

我写了一个程序,它显示了一个 JFrame,其中包含有关运行它的机器的信息(HOSTIP),它使 JDBC连接显示其他信息。

我的 main 函数中只有这两行:

NewFrame nf = new NewFrame(); //Here I make all the needed calculations
nf.setVisible(true);

(NewFrame 扩展了 JFrame)

在构造函数中,我执行所有需要的计算并将它们设置为显示在 nf JFrame 中。

当我运行程序时,我看到 JFrameborder 0.5-1 秒后才被信息填满,尽管我将其设置为仅在构建后可见。

这是我看到的大约 1 秒:(里面是我的桌面背景)

before

然后我看到信息:

after

尽管我在构造函数中进行了所有计算,但为什么会发生这种情况?

最佳答案

听起来你在阻塞事件调度线程 (EDT)

您应该避免在 EDT 上运行任何可能阻塞或耗时的操作。这将阻止 EDT 调度重绘事件,这很重要。

您可能想看看 Concurrency in Swing可能是Swing Worker

处理 Swing 和 Threads 时的重要规则之一,您必须仅从 EDT 内部与 Swing 组件交互

关于java - 在 JFrame 上延迟显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14829554/

相关文章:

java - 学习 Swing 和 Jframe 之类的东西 - 还想了解一些有关组织的提示和技巧

java - Spring MVC : Controller RequestMapping working, 但返回总是给出 404

java - 使用引号和引号内的逗号以及引号内的转义引号分割逗号分隔的字符串

java - 通过终端启动 PlantUML JAR 失败

java - JTable 不尊重单元格渲染器的必要高度

java - 在 Swing 中的表单验证期间绘制警告符号

java - 如何检查一个数字是否以任何顺序包含自己?

java - SQLException 从 JTable 和数据库中删除行

java - JFrame 到 Window 类

java - 从外部类和线程调用Jframe中的方法来设置标签值