SWT设计的界面,有非UI线程不可以访问UI线程一说.如果要访问必须使用类似display.asyncExec(new Runnable()....的代码.
现在我的程序有几个类,其中一个类是UI界面类,另外几个不是,由于要在非UI界面类中使用UI界面类的方法,如何做呢?
是不是每一处都要使用类似display.asyncExec(new Runnable()....的代码,如果不这样做,是不是只能用一个类来专门封装UI界面类的方法,从而间接访问UI界面类?
请大家指教.

解决方案 »

  1.   

    何谓OO
    就是自己的事情自己做不干扰别人
    你和别人交流就要提供方法在UI界面类写方法访问UI界面类
    然后在每个非UI界面类中要使用
    UI界面类中传递一个应用就可以了
    比如你的UI界面类是GUI
    那么在每个要访问UI界面类里面都加上
    GUI gui;
    就可以了
      

  2.   

    感谢回答.
    肯定是要在非UI界面类中使用UI界面类对象的引用才能访问UI界面类的方法.
    问题在于在SWT中非UI类不可以访问UI类的方法,例如,我用UI界面响应用户的一个edit输入,把它存在一个String中,名为m_sMyName;
    UI类提供一个方法叫getMyName(),在非UI类中就不能直接调用getMyName()方法,而要有display.asyncExec(new Runnable()....类似的代码,比较麻烦,
    如果用一个类封装UI界面类,由这个类再提供getMyName()方法,且把display.asyncExec(new Runnable()....类似的代码写入到这个类的getMyName方法,那么这个方法就可以方便地被其它类使用,我是想是不是有别的方法避免这个麻烦的封装