我写了一个程序,显示一个JFrame包含运行它的机器的信息(HOST和IP),它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.
当我运行程序时,我看到了边框的JFrame为0.5-1秒才得到充满信息,虽然我将它只有构建之后可见.
这是我看到的大约1秒:(里面是我的桌面背景)

然后我看到了这些信息:

为什么会发生这种情况,尽管我在构造函数中进行了所有计算?
听起来像是在阻止事件调度线程(EDT)
您应该避免在EDT上运行任何可能阻塞或耗时的操作.这将阻止EDT调度重绘事件,这是重要的事情.
您可能想看看Swing中的Concurrency以及可能是Swing Worker
处理Swing和Threads时的重要规则之一,您只能与EDT内部的Swing组件进行交互
| 归档时间: |
|
| 查看次数: |
403 次 |
| 最近记录: |