Précédent   Forum du club des développeurs et IT Pro > Java > Interfaces Graphiques en Java > SWT/JFace
SWT/JFace Forum d'entraide pour les API SWT/JFace. Avant de poster -> FAQ SWT/JFace
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 05/12/2012, 14h32   #1
cacoole
Invité de passage
 
Cacoole L
Inscription : décembre 2009
Messages : 8
Détails du profil
Informations personnelles :
Nom : Cacoole L

Informations forums :
Inscription : décembre 2009
Messages : 8
Points : 1
Points : 1
Par défaut Disposition d'éléments en SWT

Bonjour,
J'ai un problème pour créer une interface avec SWT (contrainte imposée), je souhaite une interface simple découpée en 2 parties droite (produits) et gauche (versions), chaque partie doit contenir un bouton "Select all" et un bouton "Unselect all" en haut sur la même ligne, puis une liste contenant les différents produits ou versions disponibles.
Pour ce faire j'ai découpée la fenêtre en 2 avec un composite à 2 colonnes (séparation droite / gauche : versions / produits).
Ensuite je viens mettre 2 groupes (Produits et versions), jusque la tout va bien.
Maintenant dans chaque Group je fais un Composite à 2 colonnes pour insérer les 2 boutons (Select All et Unselect All), et un Composite à 1 colonne pour la liste correspondante au groupe (version / produit).
La ça ne va pas car cette liste s'aligne sur le bouton Select All et ne fait pas la largeur complète de mon groupe => si le texte est trop grand je ne vois pas tout.
Comment faire pour que ma liste dans le groupe prennent toute la largeur (en conservant les 2 boutons bien alignés juste au dessus).

Voici mon code si quelqu'un a une idée.
Merci d'avance.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
		Composite container = (Composite) super.createDialogArea(parent);
 
		composite = new Composite(container, SWT.MAX);
 
		gdCompo = new GridLayout(2, true);
		composite.setLayout(gdCompo);
 
		GridData gds = new GridData(SWT.FILL, SWT.TOP, true, false);
		composite.setLayoutData(gds);
 
		// Products
		groupProducts = new Group(composite, SWT.TOP | SWT.V_SCROLL);
		groupProducts.setLayout(new GridLayout(2, true));
		groupProducts.setText("Products");
 
		SelectProducts = new Button(groupProducts, SWT.CHECK);
		SelectProducts.setText("Select All");
		SelectProducts.setSelection(false);
 
		UnSelectProducts = new Button(groupProducts, SWT.CHECK);
		UnSelectProducts.setText("Unselect All");
		UnSelectProducts.setSelection(false);
 
		productsList = new List(groupProducts, SWT.V_SCROLL | SWT.MULTI | SWT.CHECK); 
		for (Iterator<String> iterator = datas.getProducts().iterator(); iterator.hasNext();) {
			productsList.add(iterator.next());
		}
 
		// Versions
		groupVersions = new Group(composite, SWT.V_SCROLL | SWT.FILL);
		groupVersions.setLayout(new GridLayout(1, false));
		groupVersions.setText("Versions");
 
		Composite cmp1 = new Composite(groupVersions, SWT.FILL);
		cmp1.setLayout(new GridLayout(2, true));
 
		SelectVersions = new Button(cmp1, SWT.CHECK);
		SelectVersions.setText("Select All");
		SelectVersions.setSelection(false);
 
		UnSelectVersions = new Button(cmp1, SWT.CHECK);
		UnSelectVersions.setText("Unselect All");
		UnSelectVersions.setSelection(false);
 
		Composite cmp2 = new Composite(groupVersions, SWT.FILL);
		cmp2.setLayout(new FillLayout(SWT.FILL));
 
		versionsList = new List(cmp2, SWT.V_SCROLL | SWT.MULTI | SWT.CHECK | SWT.FILL); 
		for (Iterator<String> iterator = datas.getVersions().iterator(); iterator.hasNext();) {
			versionsList.add(iterator.next());
		}
cacoole est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 14h43   #2
Gueritarish
Modérateur
 
Avatar de Gueritarish
 
Homme Marc
Développeur Java
Inscription : mai 2007
Messages : 1 564
Détails du profil
Informations personnelles :
Nom : Homme Marc
Âge : 28
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur Java
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2007
Messages : 1 564
Points : 3 574
Points : 3 574
Salut,

Il te suffit d'ajouter un layout data à ta liste:
Code :
productsList.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
Au passage, tu ne devrais pas mélanger les Layouts. Certains ne font pas bon ménage. D'ailleurs, les Composite n'acceptent pas SWT.FILL comme style.

Voilà, à+
Gueritarish
__________________
Pas de questions technique par MP, les forums sont là pour ça.

Le 5 et 6 juin à Toulouse, la première EclipseCon France !
Gueritarish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 16h23   #3
cacoole
Invité de passage
 
Cacoole L
Inscription : décembre 2009
Messages : 8
Détails du profil
Informations personnelles :
Nom : Cacoole L

Informations forums :
Inscription : décembre 2009
Messages : 8
Points : 1
Points : 1
Par défaut Parfait pour la réponse

Impeccable çà marche bien j'ai maintenant les listes qui prennent la largeur complète de leur group respectif.
Maintenant je voudrai que le group de gauche (produits) soit plus large que le group de droite (version) : environ 60% et 40% de la largeur de ma page, je ne sais pas comment faire? (actuellement la taille des group est bizarre ils n'occupent pas toute la largeur de la page, j'ai l'impression qu'elle se calcule sur la largeur des boutons Select All et Unselect All...)
De plus les listes ont parfois des éléments trop long pour l'affichage est-il possible d'avoir une scroll barre horizontal lorsque celà est nécessaire, je ne sais pas non plus comment faire?

Je donne mon code mis à jour :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
		// ---------------------
		// Management of display
		// ---------------------
 
		Composite container = (Composite) super.createDialogArea(parent);
 
		composite = new Composite(container, SWT.FILL);
 
		gdCompo = new GridLayout(2, true);
		composite.setLayout(gdCompo);
 
		GridData gds = new GridData(SWT.FILL, SWT.FILL, true, false,2,1);
		composite.setLayoutData(gds);
 
		// Products
 
		groupProducts = new Group(composite, SWT.TOP | SWT.V_SCROLL);
		groupProducts.setLayout(new GridLayout(2, true));
		groupProducts.setText("Products");
 
		SelectProducts = new Button(groupProducts, SWT.CHECK);
		SelectProducts.setText("Select All");
		SelectProducts.setSelection(false);
 
		UnSelectProducts = new Button(groupProducts, SWT.CHECK);
		UnSelectProducts.setText("Unselect All");
		UnSelectProducts.setSelection(false);
 
		productsList = new List(groupProducts, SWT.V_SCROLL | SWT.MULTI | SWT.CHECK); 
		for (Iterator<String> iterator = datas.getProducts().iterator(); iterator.hasNext();) {
			productsList.add(iterator.next());
		}
		productsList.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,2,1));
 
		// Versions
 
		groupVersions = new Group(composite, SWT.V_SCROLL | SWT.FILL);
 
		groupVersions.setLayout(new GridLayout(1, false));
		groupVersions.setText("Versions");
 
		groupVersions.setLayout(new GridLayout(2, true));
		groupVersions.setText("Versions");
 
		SelectVersions = new Button(groupVersions, SWT.CHECK);
		SelectVersions.setText("Select All");
		SelectVersions.setSelection(false);
 
		UnSelectVersions = new Button(groupVersions, SWT.CHECK);
		UnSelectVersions.setText("Unselect All");
		UnSelectVersions.setSelection(false);
 
		versionsList = new List(groupVersions, SWT.V_SCROLL | SWT.MULTI | SWT.CHECK); 
		for (Iterator<String> iterator = datas.getVersions().iterator(); iterator.hasNext();) {
			versionsList.add(iterator.next());
		}
		versionsList.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,2,1));
cacoole est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 16h48   #4
Gueritarish
Modérateur
 
Avatar de Gueritarish
 
Homme Marc
Développeur Java
Inscription : mai 2007
Messages : 1 564
Détails du profil
Informations personnelles :
Nom : Homme Marc
Âge : 28
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur Java
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2007
Messages : 1 564
Points : 3 574
Points : 3 574
J'ai adapté ton code dans cet exemple:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
public static void main(final String[] args) {
  final Display iDisplay = new Display();
  final Shell iShell = new Shell(iDisplay);
  iShell.setLayout(new GridLayout(1, false));
 
  final Composite composite = new Composite(iShell, SWT.NONE);
  composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
 
  final GridLayout gdCompo = new GridLayout(10, true);
  composite.setLayout(gdCompo);
 
  final GridData gds = new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1);
  composite.setLayoutData(gds);
 
  // Products
 
  final Group iGroupProducts = new Group(composite, SWT.TOP | SWT.V_SCROLL);
  iGroupProducts.setLayout(new GridLayout(2, false));
  iGroupProducts.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true,
      6, 1));
  iGroupProducts.setText("Products");
 
  final Button iSelectProducts = new Button(iGroupProducts, SWT.CHECK);
  iSelectProducts.setText("Select All");
  iSelectProducts.setSelection(false);
 
  final Button iUnSelectProducts = new Button(iGroupProducts, SWT.CHECK);
  iUnSelectProducts.setText("Unselect All");
  iUnSelectProducts.setSelection(false);
 
  final List productsList =
    new List(iGroupProducts, SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI
        | SWT.CHECK | SWT.BORDER);
  productsList.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2,
      1));
 
  // Versions
 
  final Group iGroupVersions = new Group(composite, SWT.V_SCROLL | SWT.FILL);
  iGroupVersions.setLayout(new GridLayout(2, true));
  iGroupVersions.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true,
      4, 1));
  iGroupVersions.setText("Versions");
 
  final Button iSelectVersions = new Button(iGroupVersions, SWT.CHECK);
  iSelectVersions.setText("Select All");
  iSelectVersions.setSelection(false);
 
  final Button UnSelectVersions = new Button(iGroupVersions, SWT.CHECK);
  UnSelectVersions.setText("Unselect All");
  UnSelectVersions.setSelection(false);
 
  final List versionsList =
    new List(iGroupVersions, SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI
        | SWT.CHECK | SWT.BORDER);
  versionsList.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2,
      1));
 
  iShell.pack();
  iShell.open();
  while (!iShell.isDisposed()) {
    if (!iDisplay.readAndDispatch())
      iDisplay.sleep();
  }
  iDisplay.dispose();
}
Ça devrait ressembler à ce que tu attends...

Voilà, à+
Gueritarish
__________________
Pas de questions technique par MP, les forums sont là pour ça.

Le 5 et 6 juin à Toulouse, la première EclipseCon France !
Gueritarish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 17h02   #5
cacoole
Invité de passage
 
Cacoole L
Inscription : décembre 2009
Messages : 8
Détails du profil
Informations personnelles :
Nom : Cacoole L

Informations forums :
Inscription : décembre 2009
Messages : 8
Points : 1
Points : 1
Par défaut Impeccable

Merci pour la réponse rapide, c'est exactement ce que je voulais.
cacoole est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h20.


 
 
 
 
Partenaires

Hébergement Web