2017-08-03 46 views
0

我具有基於CCombo組合觀衆:SWT CCombo所選項目的亮點不起作用

public static ComboViewer createComboViewer(Composite parent) { 
    CCombo combo = new CCombo(parent, SWT.BORDER); 
    combo.setTextLimit(2); 
    combo.addVerifyListener(new UpperCaseKeyListener()); 
    ComboViewer viewer = new ComboViewer(combo); 
    viewer.setContentProvider(ArrayContentProvider.getInstance()); 
    viewer.setLabelProvider(new CustomLabelProvider()); 

    String[] strings = {"AB","CD","EF","GH","IJ"}; 

    viewer.getCCombo().addKeyListener(new KeyAdapter() { 
     public void keyReleased(KeyEvent keyEvent) { 
      String key = viewer.getCCombo().getText(); 
      System.out.println(key); 
      String[] items = viewer.getCCombo().getItems(); 
      if (!key.equals("") && key.length()==2) { 
       for (int i=0;i<strings.length;i++) { 
        if (strings[i].contains(key)) { 
         final ISelection selection = new StructuredSelection(strings[i]); 
         viewer.setSelection(selection); 
        } 
       } 
      } 
     } 
    }); 

我有一個字符串列表:{ 「AB」, 「CD」, 「EF」,「GH 「,」IJ「}在這個組合查看器。

當我鍵入例如「AB」時,從下拉列表中選擇了我的項目,但未用藍色高亮顯示。

我該如何做到這一點?

我希望當我在組合中鍵入一個項目並且它在列表中找到時,當我打開下拉列表時用藍色突出顯示。

回答

0

必須調用setInput對觀衆告訴它你的內容:

String[] strings = {"AB","CD","EF","GH","IJ"}; 

viewer.setInput(string); 

一般觀衆既需要內容提供商和標籤供應商進行設置,然後setInput被調用。