Procurando por um combinação (espectador) no swt/jface, que suporta preenchimento automático
-
21-08-2019 - |
Pergunta
Estou procurando um combinação (visualizador) no SWT / JFFFE, que suporta o AutoComplete / Type-Ahead, ou seja, o usuário pode inserir alguns caracteres e a lista suspensa deve mostrar todos os elementos correspondentes.
Solução
Você também pode conferir o org.eclipse.jface.fieldassist.AutoCompleteField
classe. Não é uma combinação, apenas um campo de texto, mas adiciona funcionalidade completa automática como se fosse uma combinação com muita facilidade. Você pode fazer algo tão simples assim:
Text textField = new Text(parentComposite, SWT.BORDER);
new AutoCompleteField(textField, new TextContentAdapter(), new String[]
{"autocomplete option 1", "autocomplete option 2"});
Outras dicas
Eu não acho que exista algo assim embutido em combinação ou trueViewer.
Como o hiato sugere org.eclipse.jface.fieldassist.AutoCompleteField
é provavelmente o melhor lugar para procurar isso, no entanto, há suporte para combos:
new AutoCompleteField(combo, new ComboContentAdapter(), new String[]
{"item0", "item1"});
Você pode estar interessado no eclipse "Assistência de conteúdo" característica. Você pode vê -lo em ação ao usar o editor Java do Eclipse IDE. Ao editar o código-fonte, às vezes você verá um menu suspenso com frases que completam o que estava digitando. (Observe que você pode pressionar Ctrl+espaço Para forçar o menu suspenso a ser exibido.)
Você também pode implementar isso em seu próprio aplicativo SWT/JFFFE. O "Guia de desenvolvedores de java para eclipse"Possui um aplicativo de amostra que implementa o conteúdo Assist. O aplicativo de amostra é um editor SQL e é descrito no Capítulo 26", construindo um editor de texto personalizado com texto JFFFE. "Na verdade, existe uma visão geral on -line do capítulo aqui. O projeto de editor SQL de amostra, com.ibm.jdg2e.editor.jfacetext.sql
, pode ser encontrado aqui.
Por outro lado, se você deseja criar seu próprio widget combinado e preencher automaticamente-o com base na entrada que está sendo inserida, isso pode não ser muito aplicável. Estou pensando o org.eclipse.jface.viewers.ComboViewer
Pode ser útil (embora eu não seja positivo).
Verificação de saída: http://sourceforge.net/projects/swtaddons/
Eu o uso no meu projeto (com um pequeno ajuste).
É realmente morto fácil de configurar isso.
Como graças ao comentário do Paz117, pensei em compartilhar o código para fazer isso funcionar:
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);
O único incômodo menor é que você precisa preencher separadamente o modelo de ComvoViewer e AutoCompleteField separadamente, mas isso pode ser pelo menos automatizado por meio de um método de utilidade estática ou algo semelhante.
Como referência para futuros visitantes, o AutoCompleteComBoinput (Add-on SWT), também pode ser uma maneira de conseguir isso.
Snippet de código para captura de tela (consulte o link de documentação acima do modelo 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);
O complemento requer que todos os frascos abaixo sejam adicionados à biblioteca: (mais informações)
- 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
Clique aqui Para o Jar Pack.