Estoy buscando un Combo (Visor) en SWT/JFace que admita autocompletar/escritura anticipada, es decir, el usuario puede ingresar un par de caracteres y el lista desplegable debe mostrar todos los elementos coincidentes.Buscando un Combo (Visor) en SWT/JFace que admita autocompletar
Respuesta
También puede consultar la clase org.eclipse.jface.fieldassist.AutoCompleteField
. No es un combo, solo un campo de texto, pero agrega funcionalidad de autocompletar 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"});
Puede estar interesado en la característica de "Asistencia de contenido" de Eclipse. Puedes verlo en acción cuando usas el editor Java de Eclipse IDE. Al editar el código fuente, a veces verá un menú desplegable con frases que completan lo que estaba escribiendo. (Tenga en cuenta que puede presionar Ctrl + Espacio para forzar la visualización del menú desplegable.)
Puede implementar esto también en su propia aplicación SWT/JFace. El "Java Developer's Guide to Eclipse" tiene una aplicación de muestra que implementa Content Assist. La aplicación de ejemplo es un editor SQL, y se describe en el Capítulo 26, "Creación de un Editor de texto personalizado con texto JFace". En realidad, hay un resumen en línea del capítulo here. El proyecto del editor de SQL de ejemplo, com.ibm.jdg2e.editor.jfacetext.sql
, se puede encontrar here.
Por otro lado, si desea crear su propio widget Combo y rellenarlo automáticamente en función de la entrada que se está ingresando, puede que esto no sea muy aplicable. Estoy pensando que el org.eclipse.jface.viewers.ComboViewer
podría ser útil (aunque no estoy seguro).
No creo que haya algo como esto ya sea integrado en 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"});
Salida: http://sourceforge.net/projects/swtaddons/
lo uso en mi proyecto (con una pequeño ajuste).
Realmente es muy fácil configurar esto.
Como 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 al menos automatizarse mediante un método de utilidad estático o algo similar.
Como referencia para futuros visitantes, el AutocompleteComboInput (SWT Add-on), también puede ser una forma de lograr esto.
Fragmento de código de captura de pantalla (consulte enlace de documentación anteriormente 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 complemento requiere todos los JAR siguiente para ser añadido a la Biblioteca: (more info)
- Eclipse-equinoccio-common-3.5.0.jar
- net.sf.swtaddons_0.1.1_b in_src.jar (sourceforge)
- org.eclipse.core.commands.jar
- org.eclipse.jface-3.6.0.jar
Haga clic here para el paquete JAR.
- 1. Buscando un visor web en PDF, no el visor de documentos de google
- 2. buscando la funcionalidad de autocompletar en emacs
- 3. Buscando un visor de archivos de registro de transacciones SQL
- 4. Trabajar con .NET Combo Boxes
- 5. Cómo crear un combo box o un cuadro de texto de autocompletar para filtrar el texto que contiene una cadena
- 6. Buscando una estructura similar a una matriz eficiente que admita "replace-one-member" y "append"
- 7. ¿Hay un lenguaje rápido que admita continuaciones portátiles?
- 8. Crear un intérprete TCL que solo admita comandos que suministre
- 9. Icono En ExtJs Combo
- 10. ¿Hay una función `printk()` que admita `va_list`?
- 11. ¿Hay alguna herramienta que admita matemáticas discretas?
- 12. ¿Hay un contenedor Oracle para Python que admita columnas xmltype?
- 13. Combo Box if declaración
- 14. ¿Hay un visor DGML?
- 15. RichFaces and Facelets, un buen combo?
- 16. Buscando un host que pueda manejar Haskell
- 17. ¿Hay un controlador para mysql en nodejs que admita procedimientos almacenados?
- 18. Sugiera un visor de PDF para WPF
- 19. ¿Hay una biblioteca Diff para Java que admita Anotar/Culpar?
- 20. Zend framework; Hacer que el controlador use un visor diferente
- 21. ¿Cómo obtener dispayfield en el combo extjs?
- 22. ¿Hay alguna manera de que un servidor Git admita solicitudes de clientes svn?
- 23. Buscando un objectGUID en AD
- 24. ¿Existe algún reemplazo para PHPDocumentor que admita PHP 5.3?
- 25. ¿Hay algún ancho completo que admita CSS Grid System?
- 26. ¿Hay alguna base de datos que admita buffers de protocolo?
- 27. ¿Cómo hago que Tkinter admita la transparencia PNG?
- 28. ¿Cómo dejar que ack admita más tipos de archivos?
- 29. diseñar una cola que admita la función getMedian
- 30. Visor de archivos COLLADA