请教JAVA SWING 线程 阻塞的问题

之前我写了个程序,用于周期性的从多个服务器采集数据,并插入数据库,界面是命令行方式的。现在想修改成SWING界面方式的程序,然后在界面上添加一些组件,用颜色来显示与服务器... 之前我写了个程序,用于周期性的从多个服务器采集数据,并插入数据库,界面是命令行方式的。现在想修改成SWING界面方式的程序,然后在界面上添加一些组件,用颜色来显示与服务器的连接状态。服务器数据采集是用多线程写的。我想通过判断每次采集服务器数据是否成功,来修改SWING主界面中组件的颜色。但是发现造成了主界面的阻塞,界面卡住不能动了。我想不出用什么办法可以定时的,动态的修改主界面中组件的颜色。

请教一下各位,该如何去做呢?
最好能写一个简单的实例让我参考一下,谢谢各位了。
打个比方吧:有个文本文件里有很多行文字,每行都是true或false。
让一个线程去读取文本文件,每3秒读一行,如果是true,就让主界面上的label组件变成绿色,如果是false,就变成红色。同时,主界面不能卡住。
该如何实现呢,请大家赐教!
展开
 我来答
eastlife81
2013-11-07 · TA获得超过348个赞
知道小有建树答主
回答量:772
采纳率:0%
帮助的人:385万
展开全部
swing所有的ui操作都是阻塞的,如果在事件处理函数中加入一个长时间无法完成的任务,那么其他事件处理函数或者UI更新都会等待它的完成,多线程并发改变UI时很容易造成死锁。解决办法请参看下面的连接:
http://developer.51cto.com/art/201005/201603.htm,也就是说如果你要在新线程里完成耗时操作,并且在该线程最后改变GUI,那么安全的做法是像下面这样进行调用。
你的线程的run方法{
你的耗时操作。。。

SwingUtilities.invokeLater(new Runnable() {
public void run() {
GUI改变操作。。。

}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式