如何在SWT中激发自定义事件?

问题描述:

我正在swt中构建一个应用程序,我也有一个线程正在运行,它会轮询数据库的任何更改(直接由数据库或其他应用程序创建)。如何在SWT中激发自定义事件?

我能够拿起变化,但我现在需要告诉我的界面刷新,我试图直接从线程调用对象刷新方法(我做),但我得到一个SWTException "Invalid Thread Access"

有没有办法在线程中创建自己的事件,然后可以在找到数据库更改后手动触发,然后由需要刷新的类拾取。

我已经看过SWT事件,但我只能似乎找到其连接到小部件,只能通过小部件本身被解雇的...

谢谢!

您需要从用户界面线程更新用户界面。要做到这一点

的方法之一是使用对org.eclipse.swt.widgets.Display类的这些方法之一:

Display.getDefault().syncExec(new Runnable() { ... }); 

或:

Display.getDefault().asyncExec(new Runnable() { ... });