JFace tableviewer项目删除无法刷新

JFace tableviewer item delete cannot refresh

我是 SWT 和 JFace 的新手,最近,我在我的项目中使用了 JFace tableviewer。我需要通过删除按钮删除项目。但是,如果我在删除 table 查看器后刷新它,它就不起作用了。我想知道下面显示的 reason.My 代码:

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() 的方法来设置输入并在最后刷新 table:

public void update()
{
   tableViewer.setInput(DataTypeFactory.
   getInstance().getCastList(wizard.getSourceInfo().getDBType()));
   tableViewer.refresh();
 }

当您调用 refresh 时,table 会从您的 'content provider' 更新 - 所以当您删除内容时,您 必须 更新数据您的内容提供商 returns 在其 getElements 方法中。