IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SWT/JFace Java Discussion :

Disposition d'éléments en SWT


Sujet :

SWT/JFace Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2009
    Messages : 16
    Points : 7
    Points
    7
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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());
    		}

  2. #2
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    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 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Il te suffit d'ajouter un layout data à ta liste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2009
    Messages : 16
    Points : 7
    Points
    7
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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));

  4. #4
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    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 800
    Points : 3 919
    Points
    3 919
    Par défaut
    J'ai adapté ton code dans cet exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2009
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Impeccable
    Merci pour la réponse rapide, c'est exactement ce que je voulais.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Bug ?] Disposition des éléments
    Par Kaneda Shotaro dans le forum C#
    Réponses: 1
    Dernier message: 23/08/2009, 19h28
  2. [CSS 2] Disposition d'éléments : problème sous IE7
    Par yann18 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 26/03/2009, 18h24
  3. Internationnalisation et disposition des éléments d'interface
    Par nicoboud2 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 21/04/2007, 14h22
  4. [Trigonométrie] Disposition d'éléments
    Par GLDavid dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 14/10/2005, 11h22
  5. [swing] disposition des éléments dans un GridLayout
    Par al85 dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 11/02/2005, 18h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo