如何在动态更新的 JFace TableViewer 上添加 ViewerFilter?

发布于 2024-11-08 18:30:13 字数 794 浏览 3 评论 0原文

我想在 SWT/JFace 应用程序中添加搜索功能,当用户在搜索文本字段中输入文本时,该功能可以过滤 TableViewer。

final Text filterText = new Text(parent, SWT.NONE);
filterText.addModifyListener(new ModifyListener() {
    @Override
    public void modifyText(ModifyEvent arg0) {
        //TODO how to update the viewer filter with the new text ?
    }
});

TableViewer tableViewer = new TableViewer(...);

ViewerFilter filterViewer = new ViewerFilter() {
    @Override
    public boolean select(Viewer viewer, Object parentElement, Object element) {
        if (filterText.getText() == "") {
            return true;
        }
        //do my stuff to know if element need to be filtered or not
        return false;
    }
};
tableViewer.addFilter(filterViewer);

我是否需要删除过滤器并在修改侦听器中创建一个新过滤器,或者是否有更好的解决方案?

I want to add in a SWT/JFace application a search functionality that filter a TableViewer as the user enter text in the search text field.

final Text filterText = new Text(parent, SWT.NONE);
filterText.addModifyListener(new ModifyListener() {
    @Override
    public void modifyText(ModifyEvent arg0) {
        //TODO how to update the viewer filter with the new text ?
    }
});

TableViewer tableViewer = new TableViewer(...);

ViewerFilter filterViewer = new ViewerFilter() {
    @Override
    public boolean select(Viewer viewer, Object parentElement, Object element) {
        if (filterText.getText() == "") {
            return true;
        }
        //do my stuff to know if element need to be filtered or not
        return false;
    }
};
tableViewer.addFilter(filterViewer);

Do I need to remove the filter and create a new one in the modify listener or is there a better solution?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情绪操控生活 2024-11-15 18:30:13

基本上,您需要有一种方法将输入的文本传递到过滤器,在您的 select 方法中,您应该根据此文本进行过滤,并在文本小部件的侦听器中将文本传递到过滤器并调用 viewer.refresh( ) 在你的桌子上。

此示例应该对您有帮助: http://www.vogella.com/tutorials/EclipseJFaceTableAdvanced /article.html#jfacetable_filter

Basically, you need to have a way of passing the entered text to the filter, in your select method you should filter based on this text, and in your text widget's listener pass the text to the filter and call viewer.refresh() on your table.

This example should help you: http://www.vogella.com/tutorials/EclipseJFaceTableAdvanced/article.html#jfacetable_filter

燃情 2024-11-15 18:30:13

org.eclipse.ui.dialogs.FilteredTree 专门用于此目的。为什么你不能用它?

org.eclipse.ui.dialogs.FilteredTree is specifically available for that purpose. Why can't you use that?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文