中国开发网: 论坛: 程序员情感CBD: 贴子 248801
狒狒
明白怎么回事了,问题解决,多谢上面各位的关注.
在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 ();
}
};


生活不是你呼吸了多少空气,生活是那些令你无法呼吸的时刻


相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录