狒狒:
明白怎么回事了,问题解决,多谢上面各位的关注.
[阅读: 513] 2005-11-29 08:17:35
在SWT里不能使外部线程访问主线程的控件
对于Timer来讲是另一个线程,不能访问主线程创建的myCanvas这个控件
不用Timer,在主线程里另起一个线程并用display的asyncExec来干这件事就好了
public class MainWnd {
public static void main (String [] args) {
Display display = new Display ();
final Shell shell = new Shell (display);
myCanvas v = new myCanvas(shell, SWT.CENTER);
//建一个线程
new Thread() {
private Runnable cmd = new Runnable()
{
public void run()
{
v.redraw(); //在这里重画
}
};
public void run()
{
while (true)
{
try
{
Thread.sleep(500); //设置时间间隔为500毫秒
}
catch (InterruptedException e)
{ return; }
display.asyncExec(cmd); //执行上面的cmd
}
}
} .start();//运行线程
shell.open ();
while (!shell.isDisposed ()) {
if (!display.readAndDispatch ()) display.sleep ();
}
display.dispose ();
}
};
生活不是你呼吸了多少空气,生活是那些令你无法呼吸的时刻