качать автозаполнение текстового поля / выпадающий - PullRequest
3 голосов
/ 16 июля 2010

Нам нужен компонент автозаполнения для свинга, проблема с компонентом в jdesktop / SwingX заключается в том, что мы должны использовать поле со списком, и после каждого нажатия клавиши он просто прокручивается вниз до ближайшего совпадения, но в комбо все еще содержится 25 000 элементов , Он не показывает 4 или 5, которые ближе всего соответствуют друг другу, потому что они могут находиться в разных местах списка. Мы также не хотим отображать список с 25000 ...

Есть ли что-нибудь похожее на автозаполнение JSF или на главной странице Google? Нам нужен компонент, который запрашивает у нашего интерфейса что-то вроде

публичный список getOptions (String typedSoFar) { // здесь мы возвращаем 5 подходящих в соответствии с нашими критериями и просто предлагаем пользователю эти пять }

Ответы [ 4 ]

5 голосов
/ 23 июля 2010

Действительно простой способ сделать это - использовать реализацию автозаполнения GlazedList.Это очень легко начать работать.Вы можете найти его здесь:

http://publicobject.com/glazedlists/

Вы можете установить автозаполнение на JComboBox только с одной строкой застекленного кода, например:

JComboBox comboBox = new JComboBox();
Object[] elements = new Object[] {"Cat", "Dog", "Lion", "Mouse"};
AutoCompleteSupport.install(comboBox, GlazedLists.eventListOf(elements));
1 голос
/ 07 февраля 2012

GlazedList Не очень хорошо, также SwingX поддерживает автозаполнение и проще, чем "GlazedList". ты только пишешь:

AutoCompleteDecorator.decorate(yourComboBox);
0 голосов
/ 10 декабря 2018

swingX - лучший ответ.

AutoCompleteDecorator.decorate(textComplete, strings, true);

, где textComplete - текстовое поле, strings - это jList со словарем предложений, а последнее значение - ограничивать ли содержимое текстового полясловарь или нет.

0 голосов
/ 17 июля 2010

Я не использовал SwingX и ничего не знаю об их реализации.Лучше всего было бы расширить класс автозаполнения SwingX.Вместо непосредственного использования класса Autocomplete создайте собственный класс, расширяющий класс Autocomplete, и переопределите метод getOptions ():

class OurOwnAutocomplete extending swingx.*.*.autocomplete {

    private List getOptions(String typedSoFar) { // 

    // logic 

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