2017-07-21 3 views
0

J'essaie de faire ce widget: enter image description hereComment puis-je aligner différents éléments dans deux composites?

Pour que je crée un composite pour le groupe (avec 1 colonne) et un composite avec 2 colonnes (pour l'étiquette et le texte) pour id et mot de passe

Et puis, je crée un composite pour les 3 champs (case à cocher, étiquette et texte) avec 3 colonnes

Mais, la dernière ligne n'est pas alignée avec l'identifiant et le mot de passe car je voudrais aligner verticalement les "tentatives d'essai" "avec les champs de texte:

enter image description here

Mon code est:

Composite sqlComposite = new Composite(parent, SWT.NONE); 
sqlComposite.setLayout(new GridLayout(1, false)); 
sqlComposite .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); 

Group sqlGoup = new Group(sqlComposite, SWT.NONE); 
group.setLayout(new GridLayout(1, false)); 
group.setText("sql connection");  

Composite sql2Composite = new Composite(sqlGoup, SWT.NONE); 
sql2Composite.setLayout(new GridLayout(2, false)); 
sql2Composite .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); 


Label label = new Label(sql2Composite, SWT.NONE); 
label.setText("Id"); 
Text textBoxID = new Text(sql2Composite, SWT.BORDER); 
textBoxID.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); 


Label label = new Label(sql2Composite, SWT.NONE); 
label.setText("Password"); 
Text textBoxPass = new Text(sql2Composite, SWT.BORDER); 
textBoxPass.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); 


Composite sqlButtonsComposite = new Composite(sqlGoup, SWT.NONE); 
sqlButtonsComposite.setLayout(new GridLayout(3, false)); 
sqlButtonsComposite.setLayoutData(new GridData(SWT.NONE, SWT.NONE, false, false)); 

_encryptCheckButton = new Button(sqlButtonsComposite, SWT.CHECK); 
_encryptCheckButton.setText("Encrypt"); 
_encryptCheckButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, true, false)); 

Label labelSpinner = new Label(sqlButtonsComposite , SWT.NONE); 
labelSpinner.setText("RetryAttempts"); 
_retryAttemptsSpinner = new Spinner(sqlButtonsComposite, SWT.BORDER); 
_retryAttemptsSpinner.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, true, false)); 
_retryAttemptsSpinner.setMinimum(MIN_DELTA_SPINNER); 
_retryAttemptsSpinner.setMaximum(MAX_DELTA_SPINNER); 
_retryAttemptsSpinner.setSelection(DEFAULT_SPINNER_NUMBER); 
_retryAttemptsSpinner.setIncrement(INCREMENT_SPINNER_NUMBER); 

Ma question est la suivante: comment puis-je aligner l'identifiant, mot de passe et la case à cocher nommée Crypter?

Merci

Répondre

4

Vous ne pouvez pas obtenir alignement à l'aide de deux composites facilement. Il faut donc utiliser un composite avec 3 colonnes et rendre les contrôles de texte couvrent deux colonnes:

Composite sql2Composite = new Composite(sqlGoup, SWT.NONE); 
// 3 columns 
sql2Composite.setLayout(new GridLayout(3, false)); 
sql2Composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); 

Label label = new Label(sql2Composite, SWT.NONE); 
label.setText("Id"); 

Text textBoxID = new Text(sql2Composite, SWT.BORDER); 
// Span 2 columns 
textBoxID.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1)); 

label = new Label(sql2Composite, SWT.NONE); 
label.setText("Password"); 

Text textBoxPass = new Text(sql2Composite, SWT.BORDER); 
// Span 2 columns 
textBoxPass.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1)); 

// No second composite 

_encryptCheckButton = new Button(sql2Composite, SWT.CHECK); 
_encryptCheckButton.setText("Encrypt"); 
// Don't grab extra space 
_encryptCheckButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false)); 

Label labelSpinner = new Label(sql2Composite , SWT.NONE); 
labelSpinner.setText("RetryAttempts"); 
_retryAttemptsSpinner = new Spinner(sql2Composite, SWT.BORDER); 
// Don't grab extra space 
_retryAttemptsSpinner.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false)); 

J'ai ajouté des commentaires ci-dessus où les choses doivent être changées

+0

il fonctionne, merci beaucoup pour votre aide !! Je comprends mon problème maintenant – Bob