我是SWT和JFace的新手,最近,我在我的项目中使用了JFace tableviewer。我需要通过删除按钮删除项目。但是如果我删除它后刷新tableviewer它不起作用。我想知道原因。我的代码如下所示:
btnDeleteConstraint.addSelectionListener(
new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
ISelection selection = tableViewer.getSelection();
logger.debug("datatype selected");
if (selection != null || selection instanceof
IStructuredSelection) {
IStructuredSelection sel = (IStructuredSelection) selection;
Iterator iterator = sel.iterator();
while(iterator.hasNext()) {
Object obj = iterator.next();
tableViewer.remove(obj);
}
tableViewer.refresh();
}
}
});
我使用另一个名为update()的方法来设置输入并最后刷新表:
public void update()
{
tableViewer.setInput(DataTypeFactory.
getInstance().getCastList(wizard.getSourceInfo().getDBType()));
tableViewer.refresh();
}
答案 0 :(得分:0)
当您致电refresh
时,您的“内容提供商”会更新该表格。 - 所以当您删除内容时,必须更新内容提供商在其getElements
方法中返回的数据。