SWT 界面时钟显示
2007-06-29 11:06
169 查看
在SWT上显示时钟或者做定时器操作,如果直接使用java.util.timer操作,会显示线程错误。原因如下:
Widget.java中有以下检查线程一致性的代码
protected void checkWidget () ...{
Display display = this.display;
if (display == null) error (SWT.ERROR_WIDGET_DISPOSED);
if (display.thread != Thread.currentThread ()) error (SWT.ERROR_THREAD_INVALID_ACCESS);
if ((state & DISPOSED) != 0) error (SWT.ERROR_WIDGET_DISPOSED);
}
因此,由于Timer启动的TimerTask进程与display进程不一致,故会抛出thread invalid access错误。
以下是在界面显示时钟的办法。其它定时器操作请参考以下以下代码做修改:
int time=1000;
Runnable showTime = new Runnable() ...{
public void run() ...{
Date date = new Date();
DateFormat dateFormat = new SimpleDateFormat("hh:mm:ss");
label.setText(dateFormat.format(date));//已定义的用于显示时钟的label
display.timerExec(time, this);
}
};
display.timerExec(1000,showTime);//你的swt程序的display
Widget.java中有以下检查线程一致性的代码
protected void checkWidget () ...{
Display display = this.display;
if (display == null) error (SWT.ERROR_WIDGET_DISPOSED);
if (display.thread != Thread.currentThread ()) error (SWT.ERROR_THREAD_INVALID_ACCESS);
if ((state & DISPOSED) != 0) error (SWT.ERROR_WIDGET_DISPOSED);
}
因此,由于Timer启动的TimerTask进程与display进程不一致,故会抛出thread invalid access错误。
以下是在界面显示时钟的办法。其它定时器操作请参考以下以下代码做修改:
int time=1000;
Runnable showTime = new Runnable() ...{
public void run() ...{
Date date = new Date();
DateFormat dateFormat = new SimpleDateFormat("hh:mm:ss");
label.setText(dateFormat.format(date));//已定义的用于显示时钟的label
display.timerExec(time, this);
}
};
display.timerExec(1000,showTime);//你的swt程序的display
相关文章推荐
- 【java SWT界面的托盘显示】
- java SWT界面的托盘显示
- 解锁界面里时钟12进制的显示
- C++ 程序在运行时不显示dos界面
- 自制NixieDisplay辉光数码管显示时钟
- XP登陆界面显示与隐藏Administrator
- Android中设置只有程序第一次运行才显示的界面实现思路
- 解决Floodlight界面无法显示问题
- 关于使用Android installer安装应用,安装好之后点击“打开”按钮进入应用之后的界面显示问题
- 我在登录界面的输入错误值,为什么不会显示出错误提示呢?(这是代码简略)
- C#2005 一个简单的查询界面代码:DataGridView使用、图像显示、复合查询样例
- 制作登录界面,登录成功后把用户名放在session里,在第3个页面读取session显示用户名
- linux下字符界面显示汉字
- 如何在Activity界面控制软键盘显示
- qt界面上显示摄像头视频
- Android 程序运行后,界面不显示的问题解决办法
- C#在一个form中改变另一个form中控件的内容、C#做登录界面并且密码显示为*
- [FAQ10470]锁屏界面运营商名称显示全大写
- Android一种欢迎界面全屏显示方法
- 给界面中的文本框输出显示内容+从界面文本框获取内容