Soutenez-nous
Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Invité régulier
    Homme Profil pro
    Inscrit en
    octobre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2012
    Messages : 15
    Points : 7
    Points
    7

    Par défaut Size dans SashForm

    Bonjour,

    J'ai crée un sashform dans lequel se trouve 2 arbres et un bouton. Avec les paramètres de SWT j'ai mes éléments qui prennent toute la place disponible dans la vue mais je me retrouve avec un bouton énorme.

    J'ai regardé d'autres postes, notamment celui la : http://www.developpez.net/forums/d70...emes-sashform/

    Mais je ne veux pas tout configurer à la main.
    Ma question est donc comment changer la taille de mon bouton tout en gardant le FILL_BOTH pour mes arbres ?

    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
      final Shell shell = new Shell(display);
      GridLayout gridLayout = new GridLayout();
      gridLayout.numColumns = 1;
      gridLayout.makeColumnsEqualWidth = true;
      shell.setLayout(gridLayout);
      GridData browseBTGridData = new GridData();
      browseBTGridData.horizontalAlignment = GridData.END;
      sashForm = new SashForm(shell, SWT.HORIZONTAL);
      GridData sashGridData = new GridData(GridData.FILL_BOTH);
      sashForm.setLayoutData(sashGridData);
     
      leftTreeViewer = new TreeViewer(sashForm, SWT.MULTI);
     
      Button createButton = new Button(sashForm, SWT.PUSH | SWT.CENTER);
      createButton.setText("bouton");
     
      rightTreeViewer = new TreeViewer(sashForm, SWT.MULTI);
     
      sashForm.setWeights(new int[] {45, 10, 45});
     
      Composite composite = new Composite(shell, SWT.NONE);
      composite.setLayout(new GridLayout(1, true));
      GridData g = new GridData();
      g.horizontalAlignment = SWT.RIGHT;
      composite.setLayoutData(g);
      Button okButton = new Button(composite, SWT.PUSH);
      okButton.setText("Terminer");
    Le dernier composite est pour un bouton en bas a droite sous le sashform.


    ----------

    PS : Je tiens à préciser qu'en créant un composite auquel j'ajoute le bouton central, je me retrouve avec un espace vide. Et je n'ai aucune idée du pourquoi.

    PS2 : je viens de voir un autre post avec un problème similaire : http://www.developpez.net/forums/d11...ment-sashform/
    Malheureusement pas de réponses :/

  2. #2
    Invité régulier
    Homme Profil pro
    Inscrit en
    octobre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2012
    Messages : 15
    Points : 7
    Points
    7

    Par défaut

    Bonjour,

    J'ai fini par trouver tout seul :p.

    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
      Composite compo = new Composite(sashForm, SWT.CENTER);
      compo.addControlListener(new ControlListener() {
          @Override
          public void controlResized(ControlEvent e) {
              // TODO Auto-generated method stub
              Composite c = (Composite)e.getSource();
    	  int compoWidth = c.getBounds().width;
    	  int compoHeight = c.getBounds().height;
    	  int compoWidthCenter = compoWidth / 2;
    	  int compoHeightCenter = compoHeight / 2;
    	  int btWidth = createButton.getBounds().width;
    	  int btHeight = createButton.getBounds().height;
    	  int btWidthCenter = btWidth / 2;
    	  int btHeightCenter = btHeight / 2;
     
    	  int btWidthStart = compoWidthCenter - btWidthCenter;
    	  int btHeightStart = compoHeightCenter - btHeightCenter;
    	  createButton.setBounds(btWidthStart, btHeightStart, btWidth, btHeight); //createButton.getSize().x/y
    	  c.redraw();
    	  c.update();
          }
          @Override
          public void controlMoved(ControlEvent e) {
    	  // TODO Auto-generated method stub
          }
      });
      createButton = new Button(compo, SWT.PUSH | SWT.CENTER);
      createButton.setText("Créer un/des lien(s)");
      createButton.setBounds(10, 50, 140, 30);

    Alors il fallait bien créer un composite et y ajouter le bouton mais ne pas s'arrêter à ce stade. La dernière ligne sert à afficher le bouton en lui donnant des valeurs.
    Quant au Listener, il sert à centrer le bouton et à le déplacer lorsque l'on redimensionne la taille de la fenêtre.

    Voila, en espérant que ça en aidera d'autres.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •