我有一个扩展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中删除。我想用一个属性标记该对象而不是在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;
}
}
答案 0 :(得分:2)
请勿尝试覆盖setInput
。
而是使用TableViewer.addFilter
向表格添加过滤器。
过滤器是从ViewerFilter
派生的类,它可以选择显示表的哪些元素。这是一个抽象类,您提供了一个实现:
public boolean select(Viewer viewer, Object parentElement, Object element)
对于表格parentElement
未使用(过滤器也可以与TreeViewer
一起使用)。
如果更改过滤条件以使表查看器更新,请使用TableViewer.refresh()
。