«Быстрый поиск» для таблицы SWT - PullRequest
5 голосов
/ 02 февраля 2011

У меня есть таблица, которая отображает вывод из базы данных, часто это может быть до или более 10000 строк.Я рассчитываю реализовать функцию «быстрого поиска», которая позволит пользователю легко прокручивать строку со значением, которое он ищет.

Идея состоит в том, чтобы это было очень похоже на Chrome или Firefox.быстрый поискИтак:

  1. Пользователь нажимает 'CTRL + F'
  2. Появляется окно:
  3. quick find example
  4. Пользователь может быстро просмотретьчерез таблицу, нажимающую / или / \ на каждое соответствующее значение

Мой вопрос: такая таблица уже существует?Я посмотрел на NatTable и XViewer , но оба они кажутся довольно большими дополнениями для относительно незначительного изменения.

Другая библиотека, на которую я смотрел, близка к Lucene TableSearcher подходит, к сожалению, для фильтрации, а не для выделения.Однако это может быть проспект, который стоит исследовать.

Ответы [ 3 ]

2 голосов
/ 02 февраля 2011

Это не совсем то же самое, но JFace поддерживает фильтрацию представлений.Вы вводите текстовое поле и просматриваете содержимое, уменьшенное до того, что соответствует фильтру.По сути, это еще один способ представить пользователю функцию поиска / поиска.

Это можно увидеть в действии в настройках Eclipse (текстовое поле фильтра для дерева навигации в диалоговом окне).Смотрите org.eclipse.ui.dialogs.FilteredTree класс.Я не верю, что существует FilteredTable или его эквивалент, но базовые средства довольно универсальны, поэтому для их создания не требуется много работы.Взгляните на источник FilteredTree и идите оттуда.

1 голос
/ 06 февраля 2011

Решение, которое я выбрал, не было таким простым, как я надеялся, но имеет удовлетворительные характеристики.

Используемые таблицы - это виртуальные таблицы, которые могут быть очень большими. Таким образом, при загрузке набора данных мы запускаем поток для построения индекса в виде списка. Поскольку эти таблицы могут быть очень большими (но не часто), мы устанавливаем ограничение в 50 МБ для этого списка и прекращаем индексировать его при попадании в него. В большинстве случаев это вполне приемлемо, но для больших таблиц это означает, что, хотя оно может быть медленнее, оно значительно более стабильно, чем другие варианты.

'search' - это простое текстовое поле SWT с ModifyListener, которое выполняет итерации по списку, выполняя 'содержащий' для каждой записи. При совпадении строка и столбец рассчитываются по порядковому номеру (0 = 0,0, 1 = 0,1 ..).

Было бы неплохо иметь для этого простое решение, но во всех предлагаемых таблицах было слишком много функций.

0 голосов
/ 22 сентября 2011

Использование диалогового окна FilteredItemsSelectionDialog

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...