2017-12-03 64 views
0

我目前正在編寫一個應用程序,它在點擊鼠標時運行幾個更新JtextArea的方法。問題是即使我用每個方法調用更新文本區域,它實際上並沒有更新,直到mouseclick中的所有內容都已經運行。JtextArea更新問題沒有實時更新

這可能需要相當長的一段時間來貫穿所有內容,我希望看到每次調用,而不是等到一切都做

public void mouseClicked(MouseEvent e) { 
       DataCollector dc = new DataCollector(); 

       dataCollected.append("Begining Test...\n\n"); 
       dataCollected.append("Collecting System Information... \n\n"); 
       dataCollected.append(dc.getSystem()); 
           ... lots more like this... 

} 

回答

0

它實際上並沒有更新,直到一切都在鼠標點擊已運行文本區更新。

這是完全正確的。您的mouseClicked方法在GUI線程上調用,並且此線程是更新GUI的唯一線程。因此,在您的mouseClicked方法結束後,您的「更新textarea內容」操作將執行。因此,在GUI線程上運行的方法應該運行得非常快,所以其他想要在GUI線程上運行的方法可以這樣做。

您可以啓動一個與您的普通代碼並行運行的新線程,它將更新您的JTextArea。閱讀Lesson: Concurrency in Swing,瞭解如何使用swing中的線程(以及「Event Dispatch Thread」)。