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 :

[SWT] Problème de paramètre GridData


Sujet :

SWT/JFace Java

  1. #1
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut [SWT] Problème de paramètre GridData
    Bonjour,

    J'ai un problème sur une interface que j'essai de faire, et la je ne sais pas du tout comment m'y prendre.
    Bon voila la tête simplifié de ce que je voudrais avoir :



    le code associé :

    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
     
    public class TestSWT {
     
    	public static void main (String [] args) {
    		Display display = new Display ();
    		Shell shell = new Shell (display);
     
    		GridLayout gridLayout = new GridLayout();
    		gridLayout.numColumns = 3;
    		shell.setLayout(gridLayout);
     
    		Button butt1 = new Button(shell, SWT.PUSH);
    		Button butt2 = new Button(shell, SWT.PUSH);
    		Button butt3 = new Button(shell, SWT.PUSH);
    		Button butt4 = new Button(shell, SWT.PUSH);
     
    		GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
    		gridData.widthHint = 40;
    		gridData.grabExcessHorizontalSpace = false;
    		butt1.setLayoutData(gridData);
     
    		gridData = new GridData(GridData.FILL_HORIZONTAL);
    		gridData.horizontalSpan = 2;
    		butt2.setLayoutData(gridData);
     
    		gridData = new GridData(GridData.FILL_HORIZONTAL);
    		gridData.verticalAlignment = gridData.FILL_VERTICAL;
    		gridData.horizontalSpan = 2;
    		butt3.setLayoutData(gridData);
     
    		gridData = new GridData(GridData.FILL_BOTH);
    		gridData.widthHint = 40;
    		gridData.grabExcessHorizontalSpace = false;
    		butt4.setLayoutData(gridData);
     
    		shell.pack ();
    		shell.open ();
    		while (!shell.isDisposed ()) {
    			if (!display.readAndDispatch ()) display.sleep ();
    		}
    		display.dispose ();
    	}
    }
    Les boutons avec des fleches devraient être fixé horizontalement et les autres devraient les les coller et prendre le restant de la taille de la fenetre lors du resizing.

    En ce qui concerne la ligne de boutons du haut cela fonctionne correctement, mais pour la ligne du bas je n'arrive pas à fixer la taille du bouton de droite.

    Quelqu'un aurait une idée ?

    Merci d'avance.
    Etre c'est etre relatif.

  2. #2
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Points : 3 736
    Points
    3 736
    Par défaut
    marrant ca...j'y arrive pas non plus ;-)

    a mon avis, faut contourner. en mettant deux composites par exemple.

  3. #3
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut
    Et bien j'ai essayé en utilisant les Composites et il se trouve que le résultat semble être exactement le même.

    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
     
    public class TestSWT {
     
    	public static void main (String [] args) {
    		Display display = new Display ();
    		Shell shell = new Shell (display);
     
    		GridLayout gridLayout = new GridLayout();
    		shell.setLayout(gridLayout);
     
    		Composite c1 = new Composite(shell, SWT.BORDER);
    		gridLayout = new GridLayout();
    		gridLayout.numColumns = 3;
    		c1.setLayout(gridLayout);
    		c1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
     
    		Composite c2 = new Composite(shell, SWT.BORDER);
    		gridLayout = new GridLayout();
    		gridLayout.numColumns = 3;
    		c2.setLayout(gridLayout);
    		c2.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
     
    		Button butt1 = new Button(c1, SWT.PUSH);
    		Button butt2 = new Button(c1, SWT.PUSH);
    		Button butt3 = new Button(c2, SWT.PUSH);
    		Button butt4 = new Button(c2, SWT.PUSH);
     
    		GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
    		gridData.widthHint = 40;
    		gridData.grabExcessHorizontalSpace = false;
    		butt1.setLayoutData(gridData);
     
    		gridData = new GridData(GridData.FILL_HORIZONTAL);
    		gridData.horizontalSpan = 2;
    		butt2.setLayoutData(gridData);
     
    		gridData = new GridData(GridData.FILL_HORIZONTAL);
    		gridData.verticalAlignment = gridData.FILL_VERTICAL;
    		gridData.horizontalSpan = 2;
    		butt3.setLayoutData(gridData);
     
    		gridData = new GridData(GridData.FILL_VERTICAL);
    		gridData.widthHint = 40;
    		gridData.grabExcessHorizontalSpace = true;
    		butt4.setLayoutData(gridData);
     
    		shell.pack ();
    		shell.open ();
    		while (!shell.isDisposed ()) {
    			if (!display.readAndDispatch ()) display.sleep ();
    		}
    		display.dispose ();
    	}
    }
    Là, je ne sais vraiment plus quoi faire ... je suis certain que ca ne doit pas être sorcier pourtant....
    Etre c'est etre relatif.

  4. #4
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut
    C'est bon, je me suis inscrit sur le Forum de Eclipse et j'ai maintenant ma réponse. je vous la donne pour ceux que ca interesse :

    Premierement, le shell et le GridLayout doivent rester les même, maintenant pour les boutons, il suffit tout simplement de faire ca :

    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
     
        Button butt1 = new Button(shell, SWT.PUSH);
           Button butt2 = new Button(shell, SWT.PUSH);
           Button butt3 = new Button(shell, SWT.PUSH);
           Button butt4 = new Button(shell, SWT.PUSH);
     
           GridData gridData = new GridData();
    	   gridData.widthHint = 40;
    	   butt1.setLayoutData(gridData);
     
    	   gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
    	   gridData.horizontalSpan = 2;
    	   butt2.setLayoutData(gridData);
     
    	   gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.FILL_HORIZONTAL);
    	   gridData.horizontalSpan = 2;
    	   butt3.setLayoutData(gridData);
     
    	   gridData = new GridData(GridData.FILL_VERTICAL);
    	   gridData.widthHint = 40;
    	   butt4.setLayoutData(gridData);
    On pouvait pas faire plus simple ... n'est ce pas lol
    Etre c'est etre relatif.

  5. #5
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Points : 3 736
    Points
    3 736
    Par défaut
    ouais plutot simple...j'ai tendance a oublier que l'on peut donner plusieurs parametres aux widgets séparés par |
    (merci de poster la reponse ici sympa)
    bon je vais m'inscrire sur ce forum aussi tient ;-)

Discussions similaires

  1. [SWT] Problème de GridLayout
    Par otsgd dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 06/06/2006, 15h37
  2. [dll SWT] Problème avec SWT et Eclipse 3.1.1
    Par guizmo_ dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 18/11/2005, 02h02
  3. [POO] Problème de paramètre passé par référence
    Par dug dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/08/2005, 21h29
  4. [JSP] Problème passage paramètre
    Par besco dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 13/09/2004, 11h15
  5. [SWT] Problème avec la transparence des PNG
    Par sirjuh dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 02/08/2004, 09h07

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