簡體   English   中英

如何在動態更新的JFace TableViewer上添加ViewerFilter?

[英]How to add a ViewerFilter on a JFace TableViewer that update dynamically?

我想在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);

我是否需要刪除過濾器並在修改偵聽器中創建一個新過濾器,還是有更好的解決方案?

基本上,您需要有一種方法將輸入的文本傳遞給過濾器,在您選擇的方法中,您應該根據此文本進行過濾,並在文本小部件的監聽器中將文本傳遞給過濾器並調用viewer.refresh()表。

這個例子可以幫助你: http//www.vogella.com/tutorials/EclipseJFaceTableAdvanced/article.html#jfacetable_filter

org.eclipse.ui.dialogs.FilteredTree專門用於此目的。 你為什么不能用它?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM