2017-07-26 1 views
0

J'ai une liste déroulante qui sera en mode lecture seule. Je veux définir une valeur par défaut à cette liste déroulante indiquant le but de la zone de liste déroulante (par exemple: Un combo de localisation avec le texte par défaut comme 'Localisation' avec le nombre d'autres articles comme USA, Inde, Angleterre etc. Remarque: La valeur par défaut ne doit pas être l'un des éléments de la zone de liste déroulante. Je sais que ce n'est pas possible si la combo est en mode lecture seule. S'il vous plaît laissez-moi savoir si une solution de contournement possible.Comment définir la valeur par défaut dans la zone de liste déroulante Swt?

Comme le montre l'image ci-dessous, il y a une liste déroulante avec différentes variantes comme A, B, C, D etc. mais la liste déroulante a l'étiquette par défaut 'Variante'.

enter image description here

+0

Vous voulez afficher quelque chose sur la valeur d'une lecture seule composante? –

+0

@UsagiMiyamoto oui –

Répondre

3

Ceci peut être réalisé en utilisant un CCombo. Si vous définissez les éléments sur le combo en utilisant setItems(String[]), avant vous utilisez setText(String), vous verrez une valeur par défaut dans le combo qui n'est pas l'un des éléments de la liste.

Notez que lorsque vous appelez getSelectionIndex(), la valeur renvoyée sera -1, car aucun élément n'a encore été sélectionné et une fois qu'un élément a été sélectionné, la valeur par défaut ne sera plus présente.

public class CComboDefaultTextTest { 

    public static void main(final String[] args) { 
     final Display display = new Display(); 
     final Shell shell = new Shell(display); 
     shell.setLayout(new GridLayout()); 

     final Composite baseComposite = new Composite(shell, SWT.NONE); 
     baseComposite 
       .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 
     baseComposite.setLayout(new GridLayout()); 

     final CCombo combo = new CCombo(baseComposite, SWT.READ_ONLY 
       | SWT.BORDER); 
     combo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); 
     // Be sure to do this before calling setText() 
     combo.setItems(new String[] { "item 1", "item 2", "item 3" }); 
     combo.setText("Default"); 

     System.out.println(combo.getSelectionIndex()); 

     shell.pack(); 
     shell.open(); 
     while (!shell.isDisposed()) { 
      if (!display.readAndDispatch()) { 
       display.sleep(); 
      } 
     } 
     display.dispose(); 
    } 

} 

Résultat:

enter image description here