Domanda

Sto cercando un Combo (Viewer) in SWT / JFace che supporta completamento automatico / type-ahead, vale a dire l'utente può inserire un paio di caratteri e l'elenco a discesa dovrebbe mostrare tutti gli elementi corrispondenti.

È stato utile?

Soluzione

È anche possibile controllare la classe org.eclipse.jface.fieldassist.AutoCompleteField. Non è una combo, solo un campo di testo, ma aggiunge automaticamente la funzionalità completa, come se si trattasse di una combo molto facilmente. Si può fare qualcosa di semplice come questo:

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

Altri suggerimenti

Non credo che ci sia nulla di simile integrato in entrambi i Combo o ComboViewer.

Come suggerisce the hiatus org.eclipse.jface.fieldassist.AutoCompleteField è probabilmente il posto migliore per cercare per questo, tuttavia, non v'è il supporto per Combos:

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

Si può essere interessati a "Content Assist" funzione di Eclipse. Lo si può vedere in azione quando usando l'editor Java l'IDE Eclipse. Come si modifica il codice sorgente, a volte si visualizzare un menu a discesa con frasi che completano quello che stavi scrivendo. (Si noti che è possibile premere Ctrl + Spazio per forzare il menu a tendina per essere visualizzato.)

È possibile implementare questa nella propria applicazione SWT / JFace pure. Il " Java di Guida per gli sviluppatori di Eclipse " ha un'applicazione di esempio che implementa Content Assist . L'applicazione di esempio è un editor SQL, ed è descritto nel capitolo 26, "Creazione di un editor di testo personalizzato con JFace testo." In realtà c'è una panoramica on-line del capitolo qui . Il progetto di esempio editor di SQL, com.ibm.jdg2e.editor.jfacetext.sql, può essere trovato qui .

D'altra parte, se si desidera creare il proprio widget di Combo e auto-popolare che sulla base di input che viene immesso, allora questo potrebbe non essere molto applicabile. Sto pensando la org.eclipse.jface.viewers.ComboViewer potrebbe essere utile (anche se io non sono positive).

Check out: http://sourceforge.net/projects/swtaddons/

Io lo uso nel mio progetto (con un piccolo trucco).

E 'morto davvero facile da installare questo.

Per quanto grazie al commento di paz117, ho pensato di condividere il codice per fare questo lavoro:

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

L'unico fastidio minore è che si deve per popolare a parte il modello di ComboViewer e AutoCompleteField separatamente, ma che può essere almeno automatizzato attraverso un metodo di utilità statico o qualcosa di simile.

Per quanto riferimento per i futuri visitatori, il AutocompleteComboInput (SWT Add-on), può anche essere un modo per raggiungere questo obiettivo.

AutocompleteComboInput

Codice snippet screenshot (fare riferimento alla documentazione di cui sopra collegamento per il modello di codice):

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

L'add-on richiede che tutti i JAR qui sotto per essere aggiunto alla Biblioteca: ( ulteriori informazioni )

  • eclipse-equinozio-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

qui per JAR pacchetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top