Java 如何在swt中更新列值?

Java 如何在swt中更新列值?,java,swt,Java,Swt,我不熟悉JavaSWT,但我还是设法创建了一个表,并使用contentProvider和labelProvider将值填充到表中 现在,我想根据服务器返回的响应,从未处理-->进行中-->完成更新状态列值 我怎样才能做到这一点 当我在谷歌上搜索时,我发现了display.syncExec。但是当我尝试这个时,我得到了NullPointerException public Thread refresh( final InvoiceShadow shadow, final GenericCommun

我不熟悉JavaSWT,但我还是设法创建了一个表,并使用contentProvider和labelProvider将值填充到表中

现在,我想根据服务器返回的响应,从未处理-->进行中-->完成更新状态列值

我怎样才能做到这一点

当我在谷歌上搜索时,我发现了display.syncExec。但是当我尝试这个时,我得到了NullPointerException

public Thread refresh( final InvoiceShadow shadow, final GenericCommunicationResponse response, final List shadowList){

    return new Thread() {

    public void run() {

            display.syncExec( new Runnable() {

                public void run() {                     
                    refreshStatus( shadow, response,shadowList );
                }
            });         
        }
    };
}

public void refreshStatus( InvoiceShadow shadow, GenericCommunicationResponse response, List shadowList ){

    tableViewer.setInput(shadowList);

    if(response.isSuccess()){

        shadow.setStatus(new InvoiceStatusType("Varianced"));

    } else {
        shadow.setStatus(new InvoiceStatusType("NotVarianced"));        
    }

    tableViewer.refresh();
}

请在这方面帮助我,并请告诉我是否有任何其他方法来更新该列。

显示从哪里来?你从哪里得到空指针异常?我明白为什么我会得到空指针。这个问题已经解决了。然而,我还面临一个问题,代码的执行在display.syncExec(newrunnable()中)被卡住了..我没有收到任何异常或错误。SyncExec将等待主SWT UI线程空闲。如果您正在UI线程中执行长时间的操作,它将挂起。长时间运行的代码必须在非UI线程中。很抱歉,这可能是一个非常基本的问题,您这么说是什么意思?当您说代码必须在非UI线程中时-呵呵我能做到这一点吗?