2009-07-01 158 views

回答

11

您還可以查看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"}); 
3

您可能感興趣的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可能會有幫助(雖然我不積極)。

6

我不認爲有這樣的內置或者組合或ComboViewer什麼。

由於thehiatus表明org.eclipse.jface.fieldassist.AutoCompleteField可能是尋找這個最好的地方,然而,有一個功放音箱支持:

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

設置它真的很容易。

至於感謝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的模型,但至少可以通過靜態工具方法或類似的方法自動化。

1

作爲未來訪問者的參考,AutocompleteComboInput(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); 

的附加要求所有的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包。