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