如何在新设置时重新加载SWT项目?

时间:2013-05-31 15:25:12

标签: java swt

我正在尝试展示动态toolTipText。我的代码如下:

...
public TrayItem item;
...

public static void main(String args[]) {
    ....
    ....
    TrayItem item = new TrayItem(tray, SWT.NONE);
    item.setToolTipText("My string");
    ...
    ...
}

此代码已成功运行。但是如果我在另一个函数中设置新字符串,则没有变化,如下所示:

mainWindow.item.setToolTipText("My string -- " + getStatus().getMessage());

如何重新加载SWT的项目,重新设置?

1 个答案:

答案 0 :(得分:1)

您必须从创建TrayItem的线程中调用setToolTipText()。

来自Eclipse API文档:

public void setToolTipText(String string)
Throws:
... 
    SWTException -
    ...
        ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver

将呼叫转发到用户界面线程的一种方法是使用Display.asyncExec( Runnable )。例如:

    Display.getDefault().asyncExec(new Runnable() {
        public void run() {
               mainWindow.item.setToolTipText( "My string -- " + getStatus().getMessage() );
            }});