java swing awt, 如何实现一个按钮按下之后刷新界面

outPrint.setText("其他地方数据正在清空...");//这个没有显示
outPrint.repaint();//没用
outPrint.validate();//没用
try{
Thread.sleep(3000);
}catch(InterruptedExceptione1){
e1.printStackTrace();
}
就是给个提示,正在清空,等一会(3000ms)
红糖糍粑
浏览 1940回答 2
2回答

SMILET

在UI线程sleep等待,是不会刷新界面的。outPrint.setText("其他地方数据正在清空...");newThread(){publicvoidrun(){try{//sleep或做其它事情}finally{outPrint.setText("清空完毕");}}}.start();

斯蒂芬大帝

Swing是单线程事件分发机制来处理界面响应的,如果只是想等待一段时间然后刷新界面可以这样:outPrint.setText("其他地方数据正在清空...");EventQueue.invokeLater(newRunnable(){Thread.sleep(3000);outPrint.repaint();});如果要做一个比较耗费时间的操作,最好还是用SwingWorker类通过SwingWorker的doInBackground()方法处理费时间的任务,调用publish(...)把中间数据发布出来使得process方法可以接收到;方法process(...)来做中间数据的处理;方法done()来做任务结束后的界面更新。/***假设用来更新进度条,进度条的满值为100*@ClassName:SimActivity*@Description:TODO**/privateclassSimActivityextendsSwingWorker{privateintcurrent=0;privateinttarget=0;publicSimActivity(inttarget){this.target=target;}@OverrideprotectedVoiddoInBackground()throwsException{//这里执行耗时的操作,例如读取文件try{while(current
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript