簡體   English   中英

Java - 每秒重繪一次組件?

[英]Java - repaint component every second?

我想在每秒后重新繪制組件,但它不起作用。 我在想的是:

    try{
        while(true){
            Thread.currentThread().sleep(1000);
            gc.cb.next();
            gc.repaint();
        }
    }
    catch(Exception ie){
    }

我建議使用javax.swing.Timer來解決這個問題,它會定期在Event Dispatch線程上觸發一個ActionEvent (注意你應該只調用重繪和/或操作來自這個線程的Swing組件)。 然后,您可以定義ActionListener以攔截事件並在此時重新繪制組件。

JComponent myComponent = ...
int delay = 1000; //milliseconds

ActionListener taskPerformer = new ActionListener() {
  public void actionPerformed(ActionEvent evt) {
    myComponent.repaint();
  }
};

new Timer(delay, taskPerformer).start();

另請注意, SwingWorker可能不合適,因為它通常用於具有已定義的開始和結束的后台任務,而不是周期性任務。

確保你沒有占用UI線程。 如果您在UI線程中執行此循環,則永遠不會調度repaint事件。

另一個說明; sleep是一個靜態方法,應該作為Thread.sleep(...)調用。 (無論如何,無法做thatThread.sleep(...) 。)

這樣做的“正確”方法可能是使用SwingWorker 看看教程

如果您提供更多代碼,我們可以提供更好的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM