Pregunta

Busco un Combo (Visor) en SWT / JFace que apoya autocompletar / de escritura anticipada, es decir, el usuario puede introducir un par de caracteres y la lista desplegable debe mostrar todos los elementos coincidentes.

¿Fue útil?

Solución

También puede comprobar fuera de la clase org.eclipse.jface.fieldassist.AutoCompleteField. No es un combo, sólo un campo de texto, sino que añade la funcionalidad completa de auto como si fuera un combo muy fácilmente. Usted puede hacer algo tan simple como esto:

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

Otros consejos

No creo que no hay nada como esto integrado en cualquiera Combo o ComboViewer.

Como The Hiatus sugiere org.eclipse.jface.fieldassist.AutoCompleteField es probablemente el mejor lugar para buscar esto, sin embargo, no hay soporte para Combos:

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

Usted puede estar interesado en característica de Eclipse "La ayuda de contenido". Puede verlo en acción cuando se utiliza Java editor del IDE de Eclipse. A medida que edita el código fuente, se le veces aparecerá un menú desplegable con frases que completan lo que estaba escribiendo. (Tenga en cuenta que se puede pulsar Ctrl + Espacio para forzar el menú desplegable que se muestra.)

Puede implementar esto en su propia aplicación SWT / JFace también. El " de Java Guía del desarrollador de Eclipse " tiene una aplicación de ejemplo que implementa Ayuda contenta . La aplicación de ejemplo es un editor de SQL, y se describe en el capítulo 26, "La construcción de un editor de texto personalizado con JFace texto". De hecho, hay una visión general en línea del capítulo aquí . El proyecto editor de SQL de ejemplo, com.ibm.jdg2e.editor.jfacetext.sql, se puede encontrar aquí .

Por otro lado, si desea crear su propio control Combo y rellenar automáticamente que basándose en la entrada que se está ingresando, entonces esto podría no ser muy aplicable. Estoy pensando en la org.eclipse.jface.viewers.ComboViewer podría ser útil (aunque no estoy positivo).

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

Yo lo uso en mi proyecto (con un pequeño arreglo).

Es realmente muerto fácil de instalar esto.

A medida gracias al comentario de paz117, pensé en compartir el código para hacer este trabajo:

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

La única pequeña molestia es que usted tiene que llenar por separado el modelo de ComboViewer y AutoCompleteField por separado, pero que puede ser al menos automatizado a través de un método de utilidad estática o algo similar.

Como referencia para futuros visitantes, la AutocompleteComboInput (SWT Add-on), también puede ser una manera de lograr esto.

AutocompleteComboInput

Fragmento de código para la pantalla (consulte la documentación del enlace de arriba para la plantilla de código):

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

El add-on requiere que todos los archivos JAR siguientes para ser añadido a la Biblioteca: ( más información )

  • Eclipse-equinoccio-comunes-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

Haga clic aquí para el paquete JAR.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top