![](/img/trans.png)
[英]Java Repaint - JComponet needs to repaint the class when the repaint() is called from another class
[英]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.