outPrint.setText("其他地方数据正在清空...");//这个没有显示
outPrint.repaint();//没用
outPrint.validate();//没用
try {
Thread.sleep(3000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
就是给个提示,正在清空,等一会(3000ms)
在UI线程sleep等待,是不会刷新界面的。
Swing是单线程事件分发机制来处理界面响应的,如果只是想等待一段时间然后刷新界面可以这样:
如果要做一个比较耗费时间的操作,最好还是用SwingWorker类
通过SwingWorker的 doInBackground()方法处理费时间的任务,调用publish(...)把中间数据发布出来使得process方法可以接收到;
方法process(...) 来做中间数据的处理;
方法 done() 来做任务结束后的界面更新。
使用sleep方法有时间上的不确定性,你并不能确认你最终需要执行多少时间
使用事件监听回调机制