Auf der Suche nach einer Kombination (Betrachter) in SWT/Jface, die AutoComplete unterstützt

StackOverflow https://stackoverflow.com/questions/1069304

Frage

Ich suche eine Kombination (Betrachter) in SWT / Jface, die AutoComplete / Typ-Athead unterstützt. Der Benutzer kann einige Zeichen eingeben, und die Dropdown-Liste sollte alle passenden Elemente anzeigen.

War es hilfreich?

Lösung

Sie können auch das überprüfen org.eclipse.jface.fieldassist.AutoCompleteField Klasse. Es ist keine Kombination, nur ein Textfeld, aber es fügt automatische vollständige Funktionen hinzu, als wäre es sehr einfach eine Kombination. Sie können etwas so Einfaches tun:

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

Andere Tipps

Ich glaube nicht, dass so etwas in Combo oder Comboviewer integriert ist.

Wie thehiatus vorschlägt org.eclipse.jface.fieldassist.AutoCompleteField ist wahrscheinlich der beste Ort, um danach zu suchen. Es gibt jedoch Unterstützung für Combos:

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

Möglicherweise interessieren Sie sich für Eclipse's "Inhaltsassistent" Besonderheit. Sie können es in Aktion sehen, wenn Sie den Java -Editor der Eclipse IDE verwenden. Wenn Sie den Quellcode bearbeiten, sehen Sie manchmal ein Dropdown-Menü mit Phrasen, die das abschließen, was Sie eingegeben haben. (Beachten Sie, dass Sie drücken können Strg+Raum So erzwingen Sie das zu angezeigte Dropdown-Menü.)

Sie können dies auch in Ihrer eigenen SWT/Jface -Anwendung implementieren. Das "Java Developer's Guide to Eclipse"Hat eine Beispielanwendung, die Inhaltsassistent implementiert. Die Beispielanwendung ist ein SQL -Editor und wird in Kapitel 26 beschrieben." Erstellt ein benutzerdefinierter Texteditor mit Jface -Text. "Es gibt tatsächlich einen Online -Überblick über das Kapitel hier. Das Beispiel SQL Editor Project, com.ibm.jdg2e.editor.jfacetext.sql, kann gefunden werden hier.

Wenn Sie dagegen Ihr eigenes Combo-Widget erstellen und automatisch anhand der eingegebenen Eingaben basieren möchten, ist dies möglicherweise nicht sehr anwendbar. Ich denke an org.eclipse.jface.viewers.ComboViewer Könnte hilfreich sein (obwohl ich nicht positiv bin).

Kasse: http://sourceforge.net/projects/swtaddons/

Ich benutze es in meinem Projekt (mit ein wenig Optimierungen).

Es ist wirklich tot, dies einzurichten.

Wie der Kommentar von PAZ117, dachte ich, ich würde den Code teilen, um diese Arbeit zu machen:

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);

Die einzige geringfügige Belästigung besteht darin, dass Sie das Modell von Comboviewer und AutoCompletefield separat separat füllen müssen. Dies kann jedoch zumindest über eine statische Versorgungsmethode oder ähnliches automatisiert werden.

Als Referenz für zukünftige Besucher, die AutocompleteComboInput (SWT-Add-On) kann auch ein Weg sein, dies zu erreichen.

AutocompleteComboInput

Code -Snippet für Screenshot (siehe Dokumentations -Link oben für die Codevorlage):

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);

Das Add-On erfordert, dass alle folgenden Gläser in die Bibliothek hinzugefügt werden: ((Mehr Info)

  • Eclipse-Equinox-common-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

Klicken hier für Jar Pack.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top