swt tableviewer通过列的值筛选行
时间: 2024-01-23 15:03:35 浏览: 120
您可以使用 `TableViewer` 中的 `addFilter()` 方法添加筛选器,该筛选器可以根据列的值来筛选行。以下是一个示例:
```java
TableViewer tableViewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
tableViewer.setContentProvider(new MyContentProvider());
tableViewer.setLabelProvider(new MyLabelProvider());
TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE);
column.getColumn().setWidth(100);
column.getColumn().setText("Name");
column.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object element) {
return ((Person) element).getName();
}
});
tableViewer.addFilter(new ViewerFilter() {
@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
// 根据列的值来筛选行
String searchText = "John";
return ((Person) element).getName().contains(searchText);
}
});
```
在上面的示例中,我们添加了一个名为 `Name` 的列,并使用 `ColumnLabelProvider` 来获取每个 `Person` 对象的名称。我们还添加了一个筛选器,该筛选器根据 `Name` 列的值来筛选行。在示例中,我们使用 `contains()` 方法来检查名称是否包含搜索文本 `John`。您可以根据需要更改此逻辑以实现您的筛选需求。
阅读全文