簡體   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