2017-06-13 49 views
-1

我有swt文本,其中我寫了像「新的AutoCompleteField(textSearch,new TextContentProvider(),searchList);它的作品,但它發現字符串以表達式開始。創建我自己的建議提供者在那裏我可以寫的東西,如果我的字符串包含任何關鍵字,我應該提供自動彈出。如何使用jfce自動搜索字符串中的任何關鍵字AutoCompleteField

+0

你什麼意思通過「包含任何關鍵字」呢?向我們展示一些應該發生的事例。 –

+0

歡迎來到stackoverflow.com。請花些時間閱讀[幫助頁面](http://stackoverflow.com/help),尤其是名爲「[我可以在這裏詢問什麼主題?](http://stackoverflow.com/help/on -topic)「和」[我應該避免詢問什麼類型的問題?](http://stackoverflow.com/help/dont-ask)「。也請[參觀](http://stackoverflow.com/tour)並閱讀[如何提出好問題](http://stackoverflow.com/help/how-to-ask)。最後,請學習如何創建[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 – ArturFH

+0

例如我有一些產品存儲在字符串[] prodList =新的字符串[] {「衣服」,「手錶」,「鞋」,「移動」,家電「};現在讓我們說,如果我搜索」obi「或「appli」,它應該給我一個包含這樣的鍵入關鍵字的字符串,所以我的自動完成結果將是「移動」或「家電」,目前,它給了我一個開始鍵入開始的結果 – user3564259

回答

0

,因爲你需要改變內容提供商建議您不能使用這個現有的AutoCompleteField

合適的IContentProposalProvider可能類似於:

public class AnyPositionContentProposalProvider implements IContentProposalProvider 
{ 
    private final String [] proposals; 

    public AnyPositionContentProposalProvider(String [] theProposals) 
    { 
    proposals = theProposals; 
    } 

    @Override 
    public IContentProposal [] getProposals(String contents, int position) 
    { 
    List<IContentProposal> result = new ArrayList<>(); 

    for (String proposal : proposals) { 
     if (proposal.contains(contents)) { 
     result.add(new ContentProposal(proposal)); 
     } 
    } 

    return result.toArray(new IContentProposal [result.size()]); 
    } 
} 

將此設爲像AutoCompleteField工作下面的方法:

// Installs on a Text control 
public static void installAnyPositionMatch(Text control, String [] proposals) 
{ 
    installAnyPositionMatch(control, new TextContentAdapter(), proposals); 
} 

// Install on any control with a content adapter 
public static void installAnyPositionMatch(Control control, IControlContentAdapter controlContentAdapter, String [] proposals) 
{ 
    IContentProposalProvider proposalProvider = new AnyPositionContentProposalProvider(proposals); 

    ContentProposalAdapter adapter = new ContentProposalAdapter(control, controlContentAdapter, proposalProvider, null, null); 
    adapter.setPropagateKeys(true); 
    adapter.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_REPLACE); 
} 
+0

謝謝格雷格。有用。 – user3564259

相關問題