Ищете Combo (Viewer) в SWT / JFace, который поддерживает автозаполнение

Я ищу Combo (Viewer) в SWT / JFace, который поддерживает автозаполнение / опережающий ввод текста, то есть пользователь может ввести пару символов, и в раскрывающемся списке должны быть показаны все соответствующие элементы.

Ответы на вопрос(6)

Как теиатус предлагаетorg.eclipse.jface.fieldassist.AutoCompleteField, пожалуй, лучшее место, чтобы искать это, однако, есть поддержка Combos:

new AutoCompleteField(combo, new ComboContentAdapter(), new String[] 
    {"item0", "item1"});

http: //sourceforge.net/projects/swtaddons

Я использую его в своем проекте (с небольшим изменением).

AutocompleteComboInput (SWT Add-on), также может быть способом достижения этого.

Фрагмент кода для скриншота (см. Ссылку на документацию выше для шаблона кода):

import net.sf.swtaddons.autocomplete.combo.AutocompleteComboInput;
...

subjectCodeCombo = new Combo(tab3Composite, SWT.DROP_DOWN);
// other code modifying Combo appearance here...

// returns a String[] of items retrieved from database
String[] subjectCodeArray = dbQuery.subjectsToArray();

subjectCodeCombo.setItems(subjectCodeArray);
subjectCodeCombo.setText("- SELECT -");
new AutocompleteComboInput(subjectCodeCombo);

Надстройка требует, чтобы все JAR-файлы, указанные ниже, были добавлены в библиотеку: больше информаци)

Затмение-равноденствие-синфазного 3.5.0.jar net.sf.swtaddons_0.1.1_bin_src.jar SourceForge) Org.eclipse.core.commands.jar Org.eclipse.jface-3.6.0.jar

КликВо для пакета JAR.

Решение Вопроса

Вы также можете проверитьorg.eclipse.jface.fieldassist.AutoCompleteField учебный класс. Это не комбо, просто текстовое поле, но оно добавляет функциональность автозаполнения, как если бы это было очень легко. Вы можете сделать что-то простое, как это:

Text textField = new Text(parentComposite, SWT.BORDER);
new AutoCompleteField(textField, new TextContentAdapter(), new String[] 
    {"autocomplete option 1", "autocomplete option 2"});

"Контент Ассист" характерная черта. Вы можете увидеть это в действии при использовании редактора Java Eclipse IDE. Когда вы редактируете исходный код, вы иногда увидите выпадающее меню с фразами, которые дополняют то, что вы печатали. (Обратите внимание, что вы можете нажать Ctrl + Space для отображения раскрывающегося меню.)

Вы также можете реализовать это в своем приложении SWT / JFace. "@&quo Java-руководство разработчика по Eclipse "имеет пример приложения, которое реализует Content Assist. Пример приложения - это редактор SQL, и он описан в главе 26" Создание редактора нестандартного текста с помощью JFace Text ". На самом деле есть интерактивный обзор главыВо. Пример проекта редактора SQL,com.ibm.jdg2e.editor.jfacetext.sql, может быть найденВо.

С другой стороны, если вы хотите создать свой собственный виджет Combo и автоматически заполнить его на основе вводимых данных, это может быть не очень применимо. Я думаю, чтоorg.eclipse.jface.viewers.ComboViewer может быть полезным (хотя я не уверен).

В связи с комментарием paz117 я решил поделиться кодом для этой работы:

String[] proposals = new String[controller.model().size()];

for (int i = 0; i < controller.model().size(); i++) 
    proposals[i] = controller.model().get(i).getAppropriateName();

comboViewer = new ComboViewer(parent, SWT.NONE);
comboViewer.setContentProvider(new ArrayContentProvider());
comboViewer.setLabelProvider(new AppropriateLabelProvider());
comboViewer.setInput(_controller.model());
// additionally, configure the comboViewer arbitrary
new AutoCompleteField(comboViewer.getCombo(), new ComboContentAdapter(), proposals);

Единственное небольшое неудобство заключается в том, что вам нужно отдельно заполнять модель ComboViewer и AutoCompleteField по отдельности, но это можно по крайней мере автоматизировать с помощью статического служебного метода или чего-то подобного.

Ваш ответ на вопрос