用swt写了个小程序,但是运行时报如下错误:
org.eclipse.swt.SWTException: Invalid thread access
at org.eclipse.swt.SWT.error(SWT.java:3374)
at org.eclipse.swt.SWT.error(SWT.java:3297)
at org.eclipse.swt.SWT.error(SWT.java:3268)
at org.eclipse.swt.widgets.Widget.error(Widget.java:435)
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:331)
at org.eclipse.swt.widgets.Text.append(Text.java:241)
at db.DB.getCon(DB.java:22)
at db.DB.<init>(DB.java:11)
at search.SearchOneWeb.search(SearchOneWeb.java:258)
at search.SearchOneWeb.run(SearchOneWeb.java:50)
什么原因?怎么解决?

解决方案 »

  1.   

    贴出代码看看,
    一般应该是你在UI的线程里面额外启动了线程,并且在这个线程中刷新了UI,
      

  2.   

    楼上好像说的有道理
    我在线程类里面调用了swt.widgets.Text.append()
    是不是线程类里面不能调用swt的方法?
    那该怎么解决呢?给个思路?
      

  3.   

    调用方式如:
    final text = new Text(shell,SWT.BORDER);
    ................
    Display.getDefault().asyncExec(new Runnable()
    {
    public void run()
    {
    text.setText("text test!");
    }
    });