[英]java setText in loop
嗨,我試圖在循環中將 setText 設置為 JTextArea,但我想這樣做,在每個循環中,每一行都會在幀中看到。
我已經嘗試過Thread.sleep(500)
,因為我認為循環太快而無法設置每一行,但它沒有幫助。
可能嗎?? 去做吧? 我想這樣做是為了向用戶顯示從數據庫下載文件的進度。
我認為JTextArea.append(text)
可能更有用。
基於事件的單線程 gui 的性質使得更改只有在事件完全處理后才可見(從事件處理程序返回)
阻塞事件調度線程無濟於事(甚至使整個應用程序無響應)
您應該使用計時器來模擬當時的添加時間,中間有延遲
final String[] lines;
for(int i=0; i<10; i++){
Timer t = new Timer(500*i,new ActionListener(){
int ind=i;
void actionPerformed(ActionEvent e){
area.setText(area.getText() + "\n ...");
}
});
t.start();
}
這將創建 10 個計時器,每個計時器在一段時間后添加一行(增量為 500)
有一種更好的方法可以重用計時器並在一切完成后停止它,但它有點冗長
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.