簡體   English   中英

從另一個類加入時重新繪制進度條

[英]Repaint progressbar when accesed from another class

我有一個有JProgressBar的主類。 從主類我創建一個類(名為Opener )的實例,該類具有讀取通常較大的文本文件的方法(> 50000行文本)。

我將JProgressBar的引用傳遞給Opener類的方法,該方法讀取txt文件,以便可以從Opener類訪問進度條。

該方法定義如下:

 public void readtxtfile (JProgressBar myjProgressBar){....}

我這樣稱呼方法:

 Opener myopener = new Opener();
 myopener.readtxtfile (jProgressBar1);

我知道對progressbar的引用工作正常,因為我可以從那里設置它(當創建主類時,進度條設置不可見)。

readtxtfile方法中,我在讀取txt文件時更改進度條的值。

 myjProgressBar.setValue(mycounter);
 myjProgressBar.revalidate();
 myjProgressBar.repaint();

我的問題是進度條沒有重新繪制,因為它的值會發生變化。 我該怎么辦?

PS:完成txt文件的全部讀取后,進度條最后刷新。 但意味着沒有任何可見的事情發生。

這聽起來更像是你試圖從事件調度線程中讀取文件,阻止它執行任何重新繪制。

可能最好的選擇是使用SwingWorker在后台運行並加載文件的內容並使用它的屬性更改支持來更新進度。

有關詳細信息,請查看Worker Threads和SwingWorker

看看這個這個例子

暫無
暫無

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

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