我正在寻找支持自动完成 /类型的组合(查看器),即用户可以输入几个字符,下拉列表应显示所有匹配元素。

有帮助吗?

解决方案

您也可以查看 org.eclipse.jface.fieldassist.AutoCompleteField 班级。它不是一个组合,只是一个文本字段,但它添加了自动完整功能,就好像它非常容易成为组合一样。您可以做一些简单的事情:

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

其他提示

我认为组合或Comboviewer中内置的任何东西都没有。

正如thehiatus所暗示的 org.eclipse.jface.fieldassist.AutoCompleteField 可能是寻找此问题的最佳场所,但是,对Combos有支持:

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

您可能对Eclipse感兴趣 “内容协助” 特征。当使用Eclipse IDE的Java编辑器时,您可以看到它在行动中。在编辑源代码时,有时会看到一个下拉菜单,其中包含完成您输入内容的短语。 (请注意,您可以按 CTRL+空间 强制下拉菜单要显示。)

您也可以在自己的SWT/JFACE应用程序中实现此功能。这 ”Java开发人员日食指南“有一个实现内容辅助的示例应用程序。样本应用程序是SQL编辑器,在第26章中进行了描述,”用Jface文本构建自定义文本编辑器。“实际上,本章有一个在线概述 这里. 。样本SQL编辑器项目, com.ibm.jdg2e.editor.jfacetext.sql, , 可以被找寻到 这里.

另一方面,如果您想创建自己的组合小部件并根据要输入的输入自动填充它,那么这可能不是很适合。我在想 org.eclipse.jface.viewers.ComboViewer 可能会有所帮助(尽管我不是积极的)。

查看: http://sourceforge.net/projects/swtaddons/

我在项目中使用它(有所调整)。

设置它真的很容易。

感谢PAZ117的评论,以为我会分享代码来制作这项工作:

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

唯一的较小滋扰是,您必须分别分别分别填充Comboviewer和AutoCompleteField的模型,但这至少可以通过静态实用方法或类似的东西自动化。

作为未来访客的参考, 自动完整启动 (SWT附加)也可以是实现这一目标的一种方法。

AutocompleteComboInput

屏幕截图的代码段(请参阅上面的文档链接以获取代码模板):

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

附加组件需要以下所有罐子添加到库中:((更多信息)

  • 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

点击 这里 对于罐子包。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top