gpt4 book ai didi

java - 覆盖 void org.eclipse.jface.viewers.StructuredViewer.setInput(对象输入)

转载 作者:行者123 更新时间:2023-11-30 03:42:39 25 4
gpt4 key购买 nike

我有一个扩展 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;
}
}

最佳答案

不要尝试覆盖setInput

而是使用TableViewer.addFilter向表格添加过滤器。

过滤器是从ViewerFilter派生的类,它可以选择显示表格的哪些元素。这是一个抽象类,您提供以下实现:

public boolean select(Viewer viewer, Object parentElement, Object element)

对于表,不使用 parentElement(过滤器也可以与 TreeViewer 一起使用)。

如果过滤条件发生更改,请使用 TableViewer.refresh() 来更新表查看器。

关于java - 覆盖 void org.eclipse.jface.viewers.StructuredViewer.setInput(对象输入),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26474944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com