2012-08-25 107 views
1

我想讓我的用戶通過信息表進行搜索,動態地隱藏/顯示包含搜索的結果。我有隱藏部分,它運作良好,但我一旦搜索條件改變時再次顯示錶項。我怎樣才能(隱藏)一個SWT TableItem?

這裏是我的隱藏代碼:

searchField.addModifyListener(new ModifyListener() { 
      @Override 
      public void modifyText(ModifyEvent arg0) { 
       modified = true; 
       for (int i = 0; i < table.getItems().length; i++) { 
        if (!(table.getItem(i).getText(2) 
          .contains(searchField.getText()))) { 
         table.getItem(i).dispose(); 
        } 

       } 
       if ("".equals(searchField.getText())) { 
        modified = false; 
            //where I would want to un-hide items 
       } 
      } 
     }); 

回答

0

看你的代碼,看來你嘗試隱藏item通過調用dispose()。如果你部署了一個小部件,它就沒有用了。你無法取回它。

如果你想取消隱藏它再次,將不得不創建一個新的項目在先前隱藏的具有相同內容的位置。

+0

有什麼方法可以隱藏物品,但不能處理它? – user1500452

+0

@ user1500452不,沒有。 – Baz

0

實際操作某種表模型和JFace綁定不是更好嗎,而是,然後這樣做?是的,處置不會隱藏。您應該從表格中刪除該項目。

+0

也許。我對SWT瞭解不多。 – user1500452

+1

這可能是值得研究的:http://www.vogella.com/articles/EclipseDataBinding/article.html。您可能還想使用查看器。 –

0

在致電dispose之前,您可能已將TableItem的數據保存到收藏夾中。然後,當您再次搜索時,您可以檢查該集合,如果找到匹配,則通過創建新的TableItem將其重新插入Table

相關問題