Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> jTextField Autocomplete 
:(
    Опции темы
Alone
Дата 12.1.2004, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 3
Всего: 6



Можно ли сделать автокомплит для текстового поля в виде выпадающего списка каким нибудь уже готовым средством, при наличии информации для автокомплита в специальном для этого массиве?
Или писать свои классы?


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
XClan
Дата 12.1.2004, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 14.10.2003
Где: Планета Сириус

Репутация: 2
Всего: 3



А jComboBox как?


--------------------
rm -rf /bin/laden
PM MAIL WWW   Вверх
Alone
Дата 12.1.2004, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 3
Всего: 6



Нет. Немного не так.
Я хочу чтоб это был с виду обычный текстфилд, только при введении символов, выпадало меню (да, возможно, как и в комбобоксе) с найденными значениями из массива.
По аналогии как в IDE вываливается меню с автокомплитом по методам. Чем больше символов вводится, тем меньше остается найденных значений.
Я просто хотел спросить: Готовые классы для таких целей есть, или писать самому, с нуля?
А комбобокс кстати, разве позволяет автокомплит? Чёй то я в пропертях не нашел...


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
XClan
Дата 12.1.2004, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 14.10.2003
Где: Планета Сириус

Репутация: 2
Всего: 3



Код взят отсюда
Код

package temp;


/*

* AutoCompleteComboBox.java

*/


import java.util.*;

import javax.swing.*;

import javax.swing.plaf.basic.BasicComboBoxEditor;

import javax.swing.text.*;



public class AutoCompleteComboBox extends JComboBox

{

private static final Locale[] INSTALLED_LOCALES = Locale.getAvailableLocales();

private ComboBoxModel model = null;



public static void main(String[] args)

{

JFrame f = new JFrame("AutoCompleteComboBox");

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

AutoCompleteComboBox box = new AutoCompleteComboBox(INSTALLED_LOCALES, false);

f.getContentPane().add(box);

f.pack();

f.setLocationRelativeTo(null);

f.setVisible(true);

}



/**

* Constructor for AutoCompleteComboBox -

* The Default Model is a TreeSet which is alphabetically sorted and doesnt allow duplicates.

* @param items

*/

public AutoCompleteComboBox(Object[] items, boolean caseSensitive)

{

super(items);

model = new ComboBoxModel(items);

setModel(model);

setEditable(true);

setEditor(new AutoCompleteEditor(this, caseSensitive));

}


/**

* Constructor for AutoCompleteComboBox -

* The Default Model is a TreeSet which is alphabetically sorted and doesnt allow duplicates.

* @param items

*/

public AutoCompleteComboBox(Vector items, boolean caseSensitive)

{

super(items);

model = new ComboBoxModel(items);

setModel(model);

setEditable(true);

setEditor(new AutoCompleteEditor(this, caseSensitive));

}


/**

* Constructor for AutoCompleteComboBox -

* This constructor uses JComboBox's Default Model which is a Vector.

* @param caseSensitive

*/

public AutoCompleteComboBox(boolean caseSensitive)

{

super();

setEditable(true);

setEditor(new AutoCompleteEditor(this, caseSensitive));

}



/*

* ComboBoxModel.java

*/

public class ComboBoxModel extends DefaultComboBoxModel

{

/**

* The TreeSet which holds the combobox's data (ordered no duplicates)

*/

private TreeSet values = null;


public ComboBoxModel(List items)

{

super();

this.values = new TreeSet();


int i, c;

for (i = 0, c = items.size(); i < c; i++)

values.add(items.get(i).toString());


Iterator it = values.iterator();

while (it.hasNext())

super.addElement(it.next().toString());

}


public ComboBoxModel(final Object items[])

{

this(Arrays.asList(items));

}

}


/*

* AutoCompleteEditor.java

*/

public class AutoCompleteEditor extends BasicComboBoxEditor

{

public AutoCompleteEditor(JComboBox combo, boolean caseSensitive)

{

super();

editor = new AutoCompleteEditorComponent(combo, caseSensitive);

}

}


/*

* AutoCompleteEditorComponent.java

*/

public class AutoCompleteEditorComponent extends JTextField

{

JComboBox combo = null;

boolean caseSensitive = false;


public AutoCompleteEditorComponent(JComboBox combo, boolean caseSensitive)

{

super();

this.combo = combo;

this.caseSensitive = caseSensitive;

}



/**

* overwritten to return custom PlainDocument which does the work

*/

protected Document createDefaultModel()

{

return new PlainDocument()

{

public void insertString(int offs, String str, AttributeSet a) throws BadLocationException

{

if (str == null || str.length() == 0)

return;



int size = combo.getItemCount();

String text = getText(0, getLength());


for (int i = 0; i < size; i++)

{

String item = combo.getItemAt(i).toString();



if (getLength() + str.length() > item.length())

continue;


if (!caseSensitive)

{

if ((text + str).equalsIgnoreCase(item)||item.substring(0, getLength() + str.length()).equalsIgnoreCase(text + str))

{

combo.setSelectedIndex(i);

super.remove(0, getLength());

super.insertString(0, item, a);



return;

}

}



else if (caseSensitive)

{

if ((text + str).equals(item)||item.substring(0, getLength() + str.length()).equals(text + str))

{

combo.setSelectedIndex(i);

super.remove(0, getLength());

super.insertString(0, item, a);



return;

}

}

}

}

};

}

}

}



--------------------
rm -rf /bin/laden
PM MAIL WWW   Вверх
XClan
Дата 12.1.2004, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 14.10.2003
Где: Планета Сириус

Репутация: 2
Всего: 3





--------------------
rm -rf /bin/laden
PM MAIL WWW   Вверх
Alone
Дата 12.1.2004, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 3
Всего: 6



Замечательно.
Спасибо!


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0798 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.