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 - Mise en page avec les layouts


Sujet :

SWT/JFace Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Par défaut SWT - Mise en page avec les layouts
    Bonjour,

    Je m'embrouille de plus en plus avec les layouts.
    Enfaite j'aimerais une fenêtre avec une partie à droite composée de différents objets (canvas, groups, ..) et cette partie avec une longueur fixe et hauteur suivant son contenu.

    A gauche j'ai un objet table que j'aimerais qu'il s'étire lorsque l'on étire la fenêtre .. Qu'il comble l'espace quoi .. aussi bien verticalement que horizontalement ..

    Donc voilà moi je m'embrouille avec les 'grabExcessHorizontalSpace' et compagnie donc si vous pouviez m'aider à mieux comprendre mon problème car c'est pas très clair sur les tutoriels qui ne reprennent pas un exemple bien précis correspndant à ce que j'aimerais réaliser ..

    Merci d'avance,
    Bonne fin de journée ..

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Par défaut
    Désolé d'être si insistant mais je n'arrive pas à faire en sorte que mon Objet Table adapte sa longueur en fonction de l'espace qui lui est possible ..

    J'ai essayé de lui appliquer :
    gridDataTable.horizontalAlignment = SWT.FILL;
    et
    gridDataTable.grabExcessHorizontalSpace = true;

    Mais aucun résultat.

    Merci d'avance pour votre aide
    Bonne soirée ..

  3. #3
    Membre chevronné Avatar de desert
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 414
    Par défaut
    Pourrais-tu nous poster un peu de code ? Car c'est assez difficile de voir le problème dans ton cas.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Par défaut
    Bonsoir,

    merci de m'aider

    J'ai ma classe principale index :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class index extends Applet {
    	/**
             * 
             */
    	public static Display display = new Display();
    	public static Shell shell = new Shell(display);
    	public static Composite composite = new Composite(shell, SWT.NONE);
    	public static Composite compMenu = new Composite(shell, SWT.NONE);
     
    [..]
    composite étant le composite de l'ensemble de l'affichage et compMenu la toolbar au dessus ..

    Ensuite dans une autre classe comme par exemple celle qui m'affiche un tableau avec des articles et des menu à coté j'ai appliqué un GridLayout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    final GridLayout gridLayout = new GridLayout();
    			gridLayout.numColumns = 2;
    			composite.setLayout(gridLayout);
    Et puis je crée mon tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    final Table table = new Table(composite, SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER);
    		GridData gridDataTable = new GridData();
    			gridDataTable.verticalSpan = 3;
    			gridDataTable.grabExcessHorizontalSpace = true;
    			gridDataTable.grabExcessVerticalSpace = true;
    			gridDataTable.horizontalAlignment = SWT.FILL;
    			table.setLayoutData(gridDataTable);
    Et après je mets les différents trucs sur le coté (3 widgets au total : 1 canvas et 2 groups).
    Ex d'un groupe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Group groupAjoutBdc = new Group(composite, SWT.NONE);
    		GridData gridDataAjoutBdc = new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_END);
    			gridDataAjoutBdc.widthHint=240;
    			groupAjoutBdc.setLayoutData(gridDataAjoutBdc);
    		groupAjoutBdc.setText("Ajouter un bon de commande");
    		final GridLayout gridLayoutGroupAjoutBdc = new GridLayout();
    			gridLayoutGroupAjoutBdc.numColumns = 2;
    			groupAjoutBdc.setLayout(gridLayoutGroupAjoutBdc);
    Mais je veux que ces widgets ait une longeur fixe .. Parcontre le tableau lui s'élargit selon la fenêtre ..

    Merci pour votre aide ..
    Bonne soirée ..

  5. #5
    Membre chevronné Avatar de desert
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 414
    Par défaut
    En fait, le composite parent de ta table ne comble pas le restant de la fenêtre par défaut (tu peux lui ajouter le paramètre SWT.BORDER pour t'en rendre compte). Tu dois donc lui ajouter un GridData qui se chargera d'occuper tout l'espace disponible.
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    final GridLayout gridLayout = new GridLayout();
    gridLayout.numColumns = 2;
    composite.setLayout(gridLayout);
     
    GridData gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    gridData.horizontalAlignment = SWT.FILL;
    gridData.verticalAlignment = SWT.FILL;
    /* ou beaucoup plus court: GridData gridData = new GridData(GridData.FILL_BOTH); */
    composite.setLayoutData(gridData);

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Par défaut
    Merci mais celà ne résout pas le problème :S
    J'ai appliqué donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    GridData gridDataComposite = new GridData(GridData.FILL_BOTH);
    			gridDataComposite.grabExcessHorizontalSpace = true;
    			gridDataComposite.grabExcessVerticalSpace = true;
    		shell.setLayoutData(gridDataComposite);
    		composite.setLayoutData(gridDataComposite);
    		compMenu.setLayoutData(gridDataComposite);
    Mais rien qui change .. je vois la bordure du composite 'composite' toujours au même endroit même au changement de taille de la fenêtre ..

    Je ne vois pas ce que c'est ..

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

Discussions similaires

  1. Mise en page avec les macros XL4 -
    Par fred65200 dans le forum Contribuez
    Réponses: 1
    Dernier message: 15/06/2011, 12h12
  2. mise en page avec les div
    Par wind_vinch dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 26/09/2007, 19h10
  3. Pb de mise en page avec les états
    Par clov dans le forum IHM
    Réponses: 2
    Dernier message: 19/07/2006, 08h05
  4. Nouveau probleme de mise en page avec IE
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 22/10/2005, 14h47
  5. [CSS][HTML] Mise en page : Avec ou sans tableaux ?
    Par arno2000 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 09/08/2005, 02h34

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