2017-08-03 1 views
0

J'ai une visionneuse combo basé sur un CCombo:SWT CCombo point culminant de l'élément sélectionné ne fonctionne pas

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

J'ai une liste de chaînes: { "AB", "CD", "EF", "GH "," IJ "} dans cette visionneuse combinée. Lorsque je tape par exemple "AB", mon article est sélectionné dans la liste déroulante, mais il n'est pas surligné en bleu.

Comment puis-je y arriver?

Je veux que lorsque je tape un élément dans le combo et qu'il se trouve dans la liste, être surligné en bleu lorsque j'ouvre la liste déroulante.

Répondre

0

Vous devez appeler setInput sur le spectateur pour lui dire au sujet de votre contenu:

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

viewer.setInput(string); 

Dans une visionneuse générale exige à la fois fournisseur de contenu et fournisseur d'étiquettes à régler, puis setInput à appeler.