Procurando por um combinação (espectador) no swt/jface, que suporta preenchimento automático

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

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.

Foi útil?

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.

AutocompleteComboInput

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top