200分 Java Swing 刷新问题

各位,我正在用Java写一个Swing程序,遇到了一个问题。程序界面中有一个按钮,用户点击按钮时,会做一些比较耗时的操作,我本来想在按钮的actionListner最前面... 各位,我正在用Java写一个Swing程序,遇到了一个问题。程序界面中有一个按钮,用户点击按钮时,会做一些比较耗时的操作,我本来想在按钮的actionListner最前面修改一个JLabel,提示用户耐心等待,在actionListener最后再次修改这个JLabel,提示用户操作已经完成。但是后来发现对JLabel的修改不能立即得到显示,只有在actionListener结束之后才会更新。有没有什么办法能提示用户耐心等待,操作完成之后再告诉用户已经完成了呢?

我试过在actionListener里调用validate()和update(),也试过将JLabel设置成paintImmediately,但是都没有效果……

考虑过多线程,但是主线程如何知道其它线程运行完毕了呢?
展开
 我来答
Eking2000
推荐于2021-02-12 · TA获得超过1228个赞
知道小有建树答主
回答量:1471
采纳率:0%
帮助的人:728万
展开全部
我给你举个例子,
在按钮事件的执行方法中使用多线程,无需更新按钮,方法是这样的
public void actionPerformed(链尘液ActionEvent e){
new Thread(){
public void run()
{
//
//该按钮要执行的代码全部棚物写在这里,

//执行完之后再执行下兄枣面的方法
thread_end();
}
}.start();

}
void thread_end()//这个是执行结束之后提醒你执行结束的方法,
//你可以在里面写上提醒的语句,比如输出一句话之类
{

}
日月雨林Ry
2010-04-17 · TA获得超过171个赞
知道小有建树答主
回答量:133
采纳率:0%
帮助的人:162万
展开全部
你可以使用类似下面的代码,而且线程不会阻塞纳盯,保证可以解决你的问题,只要你的JDK是1.6的。

private void jButton1ActionPerformed(ActionEvent evt) {
// TODO add your handling code here:
waitLabel.setText("请耐心等待……");

new SwingWorker(){

@Override
protected Object doInBackground() throws Exception {

/敏圆/在这里你可以做你想要做的事桥茄塌情
Thread.sleep(1000); //测试使用
return ""; //返回值可以不用管他
}

@Override
protected void done() {
waitLabel.setText("已完成!");
}

}.execute();

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8bf4721dd
2010-04-17 · TA获得超过514个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:378万
展开全部
只能等,要不然就多空简线程,至于如何让做信主线程知道,没有办法,除非主线斗胡裤程再多出一个线程来监听,否则主线程无法知道,如果主线程自己监听,那么还是阻塞。肯定要写都一个while(true){}里边,然后if()break;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
日出_东南
2010-04-17 · 超过17用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:53.7万
展开全部
在actionListener中生成一个新Thread来早模完成比较耗时的操作,让actionListener只负责界面更新。主线程不知道其它线程是否运行完毕,可以让他们简州用实例变量通信。《Java编程思想》里有关于多线程与swing的陆咐缓章节。看看就知道了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lp312160599
2010-04-17 · TA获得超过165个赞
知道小有建树答主
回答量:536
采纳率:0%
帮助的人:264万
展开全部
还是需要多线程的颤毁!如何让主线程知道其他码洞裂线程运行完毕``试着用下Thread中的isAlive() 方法```来判断其他迟闭线程是否处于活动状态啊```我想这样应该就行了```
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式