0

我正在尝试显示动态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 项目?

4

1 回答 1

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() );
            }});
于 2013-05-31T16:04:23.890 回答