[SWT] dessiner un Composite avec des label et des list

Résolu
g4ry Messages postés 5 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 22 avril 2010 - 16 avril 2010 à 16:54
g4ry Messages postés 5 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 22 avril 2010 - 22 avril 2010 à 12:28
Bonjour :)

J'essaie de créer une interface graphique avec SWT mais j'ai quelques difficultés à obtenir ce que je veux.

Je voudrais que ça ressemble à ça :



J'ai lu quelques tutoriels sur les Layout et les LayoutData mais j'ai du mal à mettre tout ça en ordre.

Voici mon code actuel :

advancedContainer = new Composite(parent, SWT.BORDER);
GridData data = new GridData();
data.exclude = true;
data.horizontalAlignment = SWT.FILL;
    
GridLayout FCLayout = new GridLayout(10, false);
advancedContainer.setLayout(FCLayout);
advancedContainer.setLayoutData(data);

final Label nameLabel = new Label(advancedContainer, SWT.NONE);
nameLabel.setText("name: ");
nameList = new List(advancedContainer, SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI | SWT.BORDER);

final Label categoryLabel = new Label(advancedContainer, SWT.NONE);
categoryLabel.setText("Category: ");
categoryList = new List(advancedContainer, SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI | SWT.BORDER);


final Label tagLabel = new Label(advancedContainer, SWT.NONE);
tagLabel.setText("Tags: ");	

tagTree = new TreeViewer(advancedContainer, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
tagTree.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
tagTree.setContentProvider(new TagTreeContentProvider());
tagTree.setLabelProvider(new TagTreeLabelProvider());
tagTree.expandAll();

final Label companyLabel = new Label(advancedContainer, SWT.NONE);
companyLabel.setText("Company: ");
companyList = new List(advancedContainer, SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI | SWT.BORDER);

final Label typeLabel = new Label(advancedContainer, SWT.NONE);
typeLabel.setText("Type: ");
typeList = new List(advancedContainer, SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI | SWT.BORDER);


Actuellement, ça ne donne pas ce qui est sur l'image plus haut. Les labels sont situés à gauche de leur liste respective et les scrollbar n'apparaissent pas. En fait l'ensemble du Composite prend la hauteur de la plus haute des listes.

Moi je voudrais que toutes les listes aient la même taille, au moins en hauteur, et que les scrollbar apparaissent si besoin.

Merci pour l'aide que vous pourrez m'apporter :)

1 réponse

g4ry Messages postés 5 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 22 avril 2010
22 avril 2010 à 12:28
Re bonjour :)

J'ai réussi à obtenir ce que je souhaitais. J'ai redéfini un layoutData de type GridData avec l'option GridData.Fill_BOTH pour chaque élément (les labels et les listes) et j'ai défini une hauteur fixe pour mon Composite, en paramétrant l'attribut HeightHint de son layoutData de type GridData.

J'ai aussi déclaré tous les labels à la suite les uns des autres puis les List et j'ai fixé le nombre de colonnes de mon Composite à 5.

Problème résolu :)
3
Rejoignez-nous