第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java swing awt, 如何實現(xiàn)一個按鈕按下之后刷新界面

java swing awt, 如何實現(xiàn)一個按鈕按下之后刷新界面

紅糖糍粑 2019-04-13 08:36:27
outPrint.setText("其他地方數(shù)據(jù)正在清空...");//這個沒有顯示outPrint.repaint();//沒用outPrint.validate();//沒用try{Thread.sleep(3000);}catch(InterruptedExceptione1){e1.printStackTrace();}就是給個提示,正在清空,等一會(3000ms)
查看完整描述

2 回答

?
SMILET

TA貢獻1796條經(jīng)驗 獲得超4個贊

在UI線程sleep等待,是不會刷新界面的。
outPrint.setText("其他地方數(shù)據(jù)正在清空...");
newThread(){
publicvoidrun(){
try{
//sleep或做其它事情
}finally{
outPrint.setText("清空完畢");
}
}
}.start();
                            
查看完整回答
反對 回復 2019-04-13
?
斯蒂芬大帝

TA貢獻1827條經(jīng)驗 獲得超8個贊

Swing是單線程事件分發(fā)機制來處理界面響應的,如果只是想等待一段時間然后刷新界面可以這樣:
outPrint.setText("其他地方數(shù)據(jù)正在清空...");
EventQueue.invokeLater(newRunnable(){
Thread.sleep(3000);
outPrint.repaint();
});
如果要做一個比較耗費時間的操作,最好還是用SwingWorker類
通過SwingWorker的doInBackground()方法處理費時間的任務,調(diào)用publish(...)把中間數(shù)據(jù)發(fā)布出來使得process方法可以接收到;
方法process(...)來做中間數(shù)據(jù)的處理;
方法done()來做任務結(jié)束后的界面更新。
/**
*假設用來更新進度條,進度條的滿值為100
*@ClassName:SimActivity
*@Description:TODO
*
*/
privateclassSimActivityextendsSwingWorker{
privateintcurrent=0;
privateinttarget=0;
publicSimActivity(inttarget){
this.target=target;
}
@Override
protectedVoiddoInBackground()throwsException{
//這里執(zhí)行耗時的操作,例如讀取文件
try{
while(currentThread.sleep(100);
current++;
publish(current);
}
}catch(InterruptedExceptione){
}
returnnull;
}
@Override
protectedvoidprocess(Listchunks){
for(Integerchunk:chunks){
//進度條設置值
processBar.setValue(chunk);
}
}
@Override
protectedvoiddone(){
//完成后的清理工作例如刷新界面或者改變某些組件的狀態(tài)等
}
}
                            
查看完整回答
反對 回復 2019-04-13
  • 2 回答
  • 0 關注
  • 1955 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號