我正在寻找支持自动完成/提前输入的SWT/JFace中的组合(查看器),即用户可以输入几个字符和下拉列表应显示所有匹配的元素。在SWT/JFace中寻找支持自动完成功能的组合(查看器)
回答
您还可以查看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"});
您可能感兴趣的Eclipse's “Content Assist”功能。使用Eclipse IDE的Java编辑器时,您可以看到它在运行。在编辑源代码时,您有时会看到一个下拉菜单,其中包含完成正在输入内容的短语。 (请注意,您可以按Ctrl + Space强制显示下拉菜单。)
您也可以在您自己的SWT/JFace应用程序中实现此功能。 “Java Developer's Guide to Eclipse”有一个实现内容辅助的示例应用程序。示例应用程序是一个SQL编辑器,第26章“使用JFace文本构建自定义文本编辑器”对此进行了介绍。实际上有关于here一章的在线概述。示例SQL编辑器项目com.ibm.jdg2e.editor.jfacetext.sql
可以找到here。另一方面,如果你想创建自己的组合部件并根据输入的输入自动填充它,那么这可能不是很适用。我认为org.eclipse.jface.viewers.ComboViewer
可能会有帮助(虽然我不积极)。
我不认为有这样的内置或者组合或ComboViewer什么。
由于thehiatus表明org.eclipse.jface.fieldassist.AutoCompleteField
可能是寻找这个最好的地方,然而,有一个功放音箱支持:
new AutoCompleteField(combo, new ComboContentAdapter(), new String[]
{"item0", "item1"});
退房: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的模型,但至少可以通过静态工具方法或类似的方法自动化。
作为未来访问者的参考,AutocompleteComboInput(SWT附加组件)也可以成为实现此目的的一种方法。
的截图代码段(参见文档链接上面的代码模板):
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);
的附加要求所有的JAR下面要添加到库中:(more info)
- Eclipse的春分-共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
点击here为JAR包。
- 1. 寻找Windows Phone 7支持的SL4功能的完整列表
- 2. 寻找支持多项功能
- 3. 寻找javascript/ajax自动完成功能,*不是jquery
- 4. Lua支持在emacs中自动完成
- 5. 键盘不支持Jquery自动完成功能
- 6. 具有自动完成支持的iSeries的查询管理器
- 7. 组合框自动完成自定义功能
- 8. 浏览器的自动完成功能
- 9. BindingSource与使用自动完成功能的组合框
- 10. Extjs - 与自动完成功能组合:两种类型的值
- 11. JQuery UI:与远程自动完成功能的组合框
- 12. 具有选定值和自动完成功能的组合框
- 13. 添加水平分离器和自动完成功能在Flex的组合框
- 14. vim自动完成功能
- 15. ElasticSearch自动完成功能
- 16. struts2自动完成功能
- 17. 自动完成功能
- 18. 自动完成功能Java
- 19. JQuery自动完成功能
- 20. iOS自动完成功能
- 21. 如何在访问中禁用组合框中的自动完成功能?
- 22. Extjs组合框自动完成功能不起作用
- 23. jQuery组合框(具有自动完成功能)在IE中滚动到顶部
- 24. 自动完成组合框
- 25. 组合框自动完成
- 26. PHP中的jQuery自动完成功能
- 27. F#2008中的自动完成功能
- 28. Sharepoint 2010中的自动完成功能
- 29. Silverlight中DatePicker的自动完成功能
- 30. jQuery的自动完成功能在IE