Java 重写void org.eclipse.jface.viewers.StructuredViewer.setInput(对象输入)
我有一个扩展org.eclipse.jface.dialogs.Dialog的类 我正在使用org.eclipse.jface.viewers.TableViewer类,如下所示Java 重写void org.eclipse.jface.viewers.StructuredViewer.setInput(对象输入),java,eclipse-plugin,Java,Eclipse Plugin,我有一个扩展org.eclipse.jface.dialogs.Dialog的类 我正在使用org.eclipse.jface.viewers.TableViewer类,如下所示 private TableViewer tableViewer = new TableViewer(newCntr, SWT.SINGLE|SWT.FULL_SELECTION|SWT.BORDER); tableViewer.setInput(setOfObjects); 我将允许用户从UI中执行删除操作。我不想
private TableViewer tableViewer = new TableViewer(newCntr, SWT.SINGLE|SWT.FULL_SELECTION|SWT.BORDER);
tableViewer.setInput(setOfObjects);
我将允许用户从UI中执行删除操作。我不想从集合中删除,只想用属性标记该对象,而不是在TableViewer中列出它。但是,TableViewer将列出集合中的所有内容。我是否应该覆盖该方法?我在下面提供了它。。。谢谢
public final void setInput(Object input) {
Control control = getControl();
if (control == null || control.isDisposed()) {
throw new IllegalStateException(
"Need an underlying widget to be able to set the input." + //$NON-NLS-1$
"(Has the widget been disposed?)"); //$NON-NLS-1$
}
try {
// fInChange= true;
unmapAllElements();
super.setInput(input);
} finally {
// fInChange= false;
}
}
不要试图覆盖
setInput
而是使用TableViewer.addFilter
将筛选器添加到表中
过滤器是从ViewerFilter
派生的类,它可以选择显示表中的哪些元素。这是一个抽象类,您提供了以下实现:
public boolean select(Viewer viewer, Object parentElement, Object element)
对于表,parentElement
(过滤器也可以与TreeViewer
一起使用)
如果筛选条件更改,请使用TableViewer.refresh()
,以更新表查看器