我有一個 JPanel,我希望它在指定的時間間隔后更新。我嘗試使用 Thread.sleep 但它不起作用。
假設我希望它在 5 秒后更新,所以我首先創建 JFrame,然后添加帶有初始組件的初始 JPanel,然后添加 Thread.sleep(5000); 之后我添加了另一個組件。但是當我運行代碼時,它只顯示一個空白幀 5 秒,然后它只是添加了 JPanel 和所有組件,包括延遲后添加的組件。
我想知道為什么這種方法不起作用以及如何使用 repaint() 來達到預期的結果,因為我沒有找到任何有用的 repaint() 教程
PS-對不起,如果問題很愚蠢,但我是新手,只是想了解這種方法不起作用的原因
uj5u.com熱心網友回復:
初始執行緒是您的主應用程式。使用它來初始化 UI。之后,您至少有兩個不同的執行緒:主執行緒,通常會被終止,事件調度執行緒 (EDT) 用于管理 UI 和處理所有事件。
您可以做的是使用您的主執行緒或應用程式需要生成的作業執行緒來觸發事件。請參閱計時器以每 x 秒觸發一次事件。
現在當 Timer 的 ActionListener 運行時,它正在定時器執行緒上運行。一些 UI 更新最好在 EDT 上完成,這就是需要移交作業的時候。在這種情況下,不要直接從計時器或主執行緒修改您的 UI,而是使用SwingUtilities.invokeAndWait()或SwingUtilities.invokeLater()調度作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/511839.html
標籤:爪哇多线程摇摆图形面板
上一篇:獲得FlatLaf主題的價值
下一篇:在Swing中需要以下UI
