繁体   English   中英

在指定时间后自动更新 JPanel

[英]Updating a JPanel automatically after specified time

我有一个 JPanel,我希望它在指定的时间间隔后更新。 我尝试使用 Thread.sleep 但它不起作用。

假设我希望它在 5 秒后更新,所以我首先创建 JFrame,然后添加初始 JPanel 和初始组件,然后添加 Thread.sleep(5000); 之后我添加了另一个组件。 但是当我运行代码时,它只显示一个空白帧 5 秒,然后它只是添加了 JPanel 和所有组件,包括延迟后添加的组件。

我想知道为什么这种方法不起作用以及如何使用 repaint() 来达到预期的结果,因为我没有找到任何有用的 repaint() 教程

PS-对不起,如果问题很愚蠢,但我是新手,只是想了解这种方法不起作用的原因

初始线程是您的主应用程序。 使用它来初始化 UI。 之后,您至少有两个不同的线程:主线程,通常会被终止,事件调度线程 (EDT) 用于管理 UI 和处理所有事件。

您可以做的是使用您的主线程或应用程序需要生成的工作线程来触发事件。 请参阅计时器以每 x 秒触发一次事件。

现在当 Timer 的 ActionListener 运行时,它正在定时器线程上运行。 一些 UI 更新最好在 EDT 上完成,这就是需要移交工作的时候。 在这种情况下,不要直接从计时器或主线程修改 UI,而是使用SwingUtilities.invokeAndWait()SwingUtilities.invokeLater()调度工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM