在JFrame上显示延迟

Mar*_*oun 1 java swing jframe

我写了一个程序,显示一个JFrame包含运行它的机器的信息(HOSTIP),它JDBC连接显示另一个信息.

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

NewFrame nf = new NewFrame(); //Here I make all the needed calculations
nf.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

(NewFrame扩展了JFrame)

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

当我运行程序时,我看到了边框JFrame0.5-1秒才得到充满信息,虽然我将它只有构建之后可见.

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

之前

然后我看到了这些信息:

后

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

Mad*_*mer 5

听起来像是在阻止事件调度线程(EDT)

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

您可能想看看Swing中的Concurrency以及可能是Swing Worker

处理Swing和Threads时的重要规则之一,您只能与EDT内部的Swing组件进行交互