首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

java 重写timertask后调用timer总是提示无效的线程入口解决方法

2012-04-05 
java 重写timertask后调用timer总是提示无效的线程入口swt中,我定义了一个label控件,想让它动态显示当前时

java 重写timertask后调用timer总是提示无效的线程入口
swt中,我定义了一个label控件,想让它动态显示当前时间:
final Label lblNewLabel = new Label(shlJargoner, SWT.NONE);lblNewLabel.setForeground(SWTResourceManager.getColor(SWT.COLOR_WHITE));lblNewLabel.setBackground(SWTResourceManager.getColor(SWT.COLOR_BLACK));
lblNewLabel.setBounds(10, 10, 183, 24);
//当前时间显示
class LabelTimerTask extends TimerTask{
SimpleDateFormat dateFormatter = new SimpleDateFormat("HH:mm:ss");
@Override
public void run() {
lblNewLabel.setText(dateFormatter.format(new java.util.Date()));
}
}
//重写TimerTask方法,按格式显示当前时间

Timer tmr = new Timer();
tmr.scheduleAtFixedRate(new LabelTimerTask(),new Date(), 1000);

程序可以执行,但label显示为空,console抛出异常:
Exception in thread "Timer-0" org.eclipse.swt.SWTException: Invalid thread access

究竟哪里不对了。。。。。。

[解决办法]
应该是这样的

//当前时间显示
class LabelTimerTask extends TimerTask{
SimpleDateFormat dateFormatter = new SimpleDateFormat("HH:mm:ss");
Display display = Display.getDefault();
display.syncExec(new Runnable() {
@Override
public void run() {
lblNewLabel.setText(dateFormatter.format(new java.util.Date()));
}
});
}
//重写TimerTask方法,按格式显示当前时间

热点排行