Быстрый поиск в приложениях Java Swing? - PullRequest
2 голосов
/ 22 сентября 2008

Я забочусь о том, какой компонент лучше всего подходит для быстрого отображения результатов поиска в разгаре. Я хочу создать что-то вроде этого, создать текстовое поле, в которое пользователь может ввести какой-то текст, во время его ввода я улучшу быстрый поиск в базе данных, и хочу показать данные ниже текстового поля, и он сможет Для просмотра результатов и при нажатии введите результат будет отображаться в таблице. Итак, мой вопрос, есть ли компонент, который уже имеет эту логику для отображения? Или это не так, как лучше это реализовать.

Этот поиск будет чем-то, что дает мне ajax в сети, такая же логика, как и в случае с настольным приложением.

Ответы [ 6 ]

6 голосов
/ 22 сентября 2008

Вы ищете что-то вроде компонента автозаполнения для Java Swing?

SwingX имеет такой компонент. См. здесь для JavaDoc. У него есть множество служебных методов для выполнения различных задач, то есть автоматического заполнения текстового поля из содержимого JList.

3 голосов
/ 23 сентября 2008

Я настоятельно, настоятельно рекомендую вам взглянуть на Glazed Lists - это одна из лучших библиотек Java с открытым исходным кодом, и она делает большую часть того, о чем вы спрашиваете, очень простой.

3 голосов
/ 22 сентября 2008

Вы должны будете сначала присоединить слушателя к JTextField s Document, чтобы получать уведомления всякий раз, когда пользователь вводит в поле (или изменяет его).

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

Несколько вещей, которые нужно иметь в виду:

  1. Код для поиска по бэкэнду должен быть в другом потоке
  2. Код, который обновляет список, должен обновлять модель списка
  3. Вам нужно будет управлять всеми вашими результатами поиска в бэкэнде, чтобы обновлять список только самым последним результатом (например, типы пользователей «A», поиск бэкэнф ищет. Тем временем пользователь набрал «C», отбрасывая внутренний поиск для «AC». Необходимо убедиться, что результаты поиска «A» не отображаются в списке, если доступны результаты поиска «AC»).
1 голос
/ 30 сентября 2008

Можно конечно. Это тоже просто. Для выпадающего списка терминов просто используйте всплывающее меню. Это просто Фоновая обработка введенного текста также проста. Наслаждайтесь!

1 голос
/ 22 сентября 2008

В интересах убить двух зайцев одним выстрелом: иметь отдельную индексирующую нить. Это будет:

  1. Повышение скорости поиска при каждом его выполнении.
  2. Улучшение отзывчивости пользовательского интерфейса, поскольку индексирование происходит в отдельном потоке.

Конечно, точно , как вы выполняете индексацию, будет широко варьироваться в зависимости от вашего конкретного приложения. Вот хорошее место для начала исследования: Search Indexing . И, пожалуйста, игнорируйте ссылку на Web 3.0 [sic].

1 голос
/ 22 сентября 2008

Использовать Hibernate Search.

SwingHack (http://oreilly.com/catalog/9780596009076/) книга имеет пример этого.

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