簡體   English   中英

JProgressBar可以顯示線程還在運行嗎?

[英]Can a JProgressBar show that a thread is alive?

我正在嘗試了解線程和JProgressBar。

我有一個實現Runnable的類。 假設run()睡眠20秒並顯示“ Hello World”。

是否可以創建一個JProgressBar,只要該線程處於活動狀態,它就會更新?

如果我有一個int incrementer ,我可以做這樣的事情嗎(顯然,它不起作用,但是是否有類似的東西?):

while (Thread.isAlive()) {
    incrementer++;

    progress.setValue(incrementer);
    Rectangle progressRect = progress.getBounds();
    progressRect.x = 0;
    progressRect.y = 0;
    progress.paintImmediately( progressRect ); 
}

謝謝你的幫助。

是的,但是您需要從線程的上下文中更新進度條,否則,您將阻止事件調度線程(EDT)。 這意味着您將需要使用SwingUtilities.invokeLater將更新與EDT同步。

仔細查看Swing中的並發以獲取更多詳細信息

您還可以查看進度條的不確定狀態,當您不知道需要完成多少工作時,該狀態條可用於指示正​​在進行的工作

您還可以使用SwingWorker ,它通過它的PropertyChange支持來支持進度

暫無
暫無

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

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