2011-02-01 202 views
5

我有一個表格顯示數據庫的輸出,通常可以達到10,000行以上。我正在尋找實施「快速查找」功能,這將允許用戶輕鬆地滾動到他們搜索的值的行。SWT的「快速查找」表

這個想法與Chrome或Firefox的快速查找非常相似。所以:

  1. 用戶點擊 'CTRL + F'
  2. 一個對話框彈出:
  3. quick find example
  4. 然後,用戶可以快速通過表脫脂推動/或/ \每個匹配值

我的問題是,這樣的表是否已經存在?我曾看過NatTableXViewer,但它們看起來都是相當小的改動的相當大的增加。

我看過的另一個庫很接近billl,這個是Lucene TableSearcher不幸的是這是爲過濾而不是突出顯示而設計的。但它可能是一個值得調查的途徑。

回答

1

我選擇的解決方案並不像我希望的那麼簡單,但是具有令人滿意的性能。

涉及的表是可能非常大的虛擬表。因此,在加載數據集之後,我們啓動一個線程來構建一個列表形式的索引。因爲這些表格可能非常大(但並不經常),所以我們爲此列表設置了50mb的限制,並在我們點擊它時停止索引。在大多數情況下,這是完全可以接受的,但對於較大的表格,這意味着雖然速度可能較慢,但比其他選項穩定得多。

「搜索」是一個簡單的SWT文本框,帶有ModifyListener,它遍歷列表,對每個條目執行一個'contains'。匹配時,行和列從索引號(0 = 0,0,1 = 0,1 ..)計算。

本來很高興有一個簡單的'放入'解決方案,但所有提供的表格都有太多的功能。

2

這不完全相同,但JFace確實支持過濾視圖。您輸入一個文本框並查看內容縮小到與過濾器匹配的內容。它基本上是將搜索/查找功能呈現給用戶的另一種方式。

您可以在Eclipse首選項(關於對話框中導航樹的過濾器文本字段)中看到此操作。請參閱org.eclipse.ui.dialogs.FilteredTree類。我不相信有一個FilteredTable或等價物,但底層設施是非常通用的,所以它不應該花費太多的工作才能把它們放在一起。看看FilteredTree源代碼並從那裏開始。

+0

謝謝,這個表已經有一個過濾器(使用數據庫查詢來做過濾)。這個想法是,搜索將通過允許用戶瀏覽過濾的數據來補充過濾器。 – 2011-02-02 09:51:34

0

使用FilteredItemsSelectionDialog對話框

+0

哪裏可以找到它?它是SWT還是JFace的一部分? – Mot 2011-09-26 13:17:06