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 :

taille de la scrollbar dans un scrolledcomposite


Sujet :

SWT/JFace Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 421
    Par défaut taille de la scrollbar dans un scrolledcomposite
    bonjour,

    j'ai une scrolledcomposite qui contient un composite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Composite(parent, SWT.NONE);
    dans ce composite, je rajoute 100 textfield (pour tester).
    le probleme, c'est que la taille de la scroll bar fonctionne , mais est trop grande.
    elle deborde en dehors de la fenetre.

    y a t il un moyen de forcer la taille de la verticalsrollbar dans un scrolledcomposite ?

    merci

    a+

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Il y a moyen de faire redimensionner la taille de ton ScrolledComposite.
    L'exemple contenu dans la doc devrait t'aider.

    Il y a deux solutions pour deux résultats différent. Peut être qu'une des deux pourra t'aider.
    http://help.eclipse.org/ganymede/ind...Composite.html

    @+

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 421
    Par défaut
    merci, mais j'ai le meme probleme avec ce code
    j'ai fait un exemple ici basé sur ce code.

    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    /*******************************************************************************
     * Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
     * This program and the accompanying materials are made available under the
     * terms of the Eclipse Public License v1.0 which accompanies this distribution,
     * and is available at http://www.eclipse.org/legal/epl-v10.html
     * 
     * Contributors: IBM Corporation - initial API and implementation
     ******************************************************************************/
    // package org.eclipse.swt.snippets;
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.custom.ScrolledComposite;
    import org.eclipse.swt.graphics.Color;
    import org.eclipse.swt.layout.FillLayout;
    import org.eclipse.swt.layout.GridLayout;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.widgets.Composite;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;
     
    import com.raincode.xmlbooster.swt.helper.GroupHelper;
     
    /*
     * Scroll a widget into view on focus in
     * 
     * For a list of all SWT example snippets see
     * http://www.eclipse.org/swt/snippets/
     * 
     * @since 3.0
     */
     
    public class testframe {
     
        private static GroupHelper sh;
     
        public static void main(String[] args) {
            new testframe();
        }
     
        public testframe() {
            Display display = new Display();
            Color red = display.getSystemColor(SWT.COLOR_RED);
            Color blue = display.getSystemColor(SWT.COLOR_BLUE);
            Shell shell = new Shell(display);
            shell.setLayout(new FillLayout());
     
            final Composite c1 = new Composite(shell, SWT.NONE);
            GridLayout layout = new GridLayout();
            layout.numColumns = 1;
            c1.setLayout(layout);
            c1.setSize(c1.computeSize(SWT.DEFAULT, SWT.DEFAULT));
     
            // set the minimum width and height of the scrolled content - method 2
            final ScrolledComposite sc2 = new ScrolledComposite(c1, SWT.H_SCROLL
                    | SWT.V_SCROLL | SWT.BORDER);
            sc2.setExpandHorizontal(true);
            sc2.setExpandVertical(true);
            final Composite c2 = new Composite(sc2, SWT.NONE);
            sc2.setContent(c2);
            layout = new GridLayout();
            layout.numColumns = 4;
            c2.setLayout(layout);
            Button b2 = new Button(c2, SWT.PUSH);
            b2.setText("first button");
            sc2.setMinSize(c2.computeSize(SWT.DEFAULT, SWT.DEFAULT));
     
            for (int i = 0; i < 200; i++) {
     
                Button button = new Button(c1, SWT.PUSH);
                button.setText("button " + i);
                // reset size of content so children can be seen - method 1
                c1.setSize(c1.computeSize(SWT.DEFAULT, SWT.DEFAULT));
                c1.layout();
     
                button = new Button(c2, SWT.PUSH);
                button.setText("button " + i);
                // reset the minimum width and height so children can be seen -
                // method 2
                sc2.setMinSize(c2.computeSize(SWT.DEFAULT, SWT.DEFAULT));
                c2.layout();
            }
            shell.open();
            while (!shell.isDisposed()) {
                if (!display.readAndDispatch())
                    display.sleep();
            }
            display.dispose();
     
        }
    }
    si tu lance cela, la la fenetre contient un scroll composite dont la taille est plus grande que la fenetre. (qui elle ne contient pas de scroll). et le scroll ne permet pas de tout voir, il depasse de la fenetre.

    bon dans mon probleme c'est pas un shell, c'est un group qui contient des group ,etc..etc..mais c'est le meme cas.

    merci

    salutation

    a++

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 421
    Par défaut
    bon alors, si je supprime les lignes

    sc2.setExpandHorizontal(true);
    sc2.setExpandVertical(true);

    cela donne exactement ce que je veux (bonne taille) mais les scroll ne sont pas actifs

    une idée pour les rentres actif .

    merci

    a++

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Alors, de base, le snippet est bonne.
    Ce sont tes modifs qui sont mauvaises.

    Déjà, dans la boucle du bouton, tu ajoute des boutons a c2, ce qui est correct mais aussi à c1. Du coup, tu as une double expansion dont une qui n'est pas dans le scroll.

    Mais le vrai nerf de la guerre vient du fait que de base, ce que nous n'avons pas fait en transposant le snippet dans nos codes c'est d'ajouter le gridData à sc2.
    Eux, ils n'en avaient pas besoin car ils sont dans un flowlayout. Du coup, les composants s'étantent à leurs maximums.
    Là, on ajoute le scroll dans un composite qui est en GridLayout. Donc il faut ajouter "sc2.setLayoutData(new GridData(GridData.FILL_BOTH));".

    Donc en code ca donne pour le FillLayout :
    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
    67
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.custom.ScrolledComposite;
    import org.eclipse.swt.graphics.Color;
    import org.eclipse.swt.layout.FillLayout;
    import org.eclipse.swt.layout.GridLayout;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.widgets.Composite;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;
     
    /*
     * Scroll a widget into view on focus in
     * 
     * For a list of all SWT example snippets see
     * http://www.eclipse.org/swt/snippets/
     * 
     * @since 3.0
     */
     
    public class testframe {
     
     
    	public static void main(String[] args) {
    		new testframe();
    	}
     
    	public testframe() {
    		Display display = new Display();
    		Color red = display.getSystemColor(SWT.COLOR_RED);
    		Color blue = display.getSystemColor(SWT.COLOR_BLUE);
    		Shell shell = new Shell(display);
    		shell.setLayout(new FillLayout());
     
    		final Composite c1 = new Composite(shell, SWT.NONE);
    		GridLayout layout1 = new gridLayout();
    		layout1.numColumns = 1;
    		c1.setLayout(layout1);
     
    		// set the minimum width and height of the scrolled content - method 2
    		final ScrolledComposite sc2 = new ScrolledComposite(c1, SWT.H_SCROLL
    				| SWT.V_SCROLL | SWT.BORDER);
    		sc2.setExpandHorizontal(true);
    		sc2.setExpandVertical(true);
    		sc2.setLayoutData(new GridData(GridData.FILL_BOTH));
     
    		final Composite c2 = new Composite(sc2, SWT.NONE);
    		sc2.setContent(c2);
    		GridLayout layout2 = new GridLayout();
    		layout2.numColumns = 4;
    		c2.setLayout(layout2);
     
    		for (int i = 0; i < 200; i++) {
     
    			Button button = new Button(c2, SWT.PUSH);
    			button.setText("button " + i);
    			sc2.setMinSize(c2.computeSize(SWT.DEFAULT, SWT.DEFAULT));
    			c2.layout();
    		}
    		shell.open();
    		while (!shell.isDisposed()) {
    			if (!display.readAndDispatch()) {
    				display.sleep();
    			}
    		}
    		display.dispose();
    	}
    }
    ou pour le GridLayout :

    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
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.custom.ScrolledComposite;
    import org.eclipse.swt.graphics.Color;
    import org.eclipse.swt.layout.FillLayout;
    import org.eclipse.swt.layout.GridLayout;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.widgets.Composite;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;
     
    /*
     * Scroll a widget into view on focus in
     * 
     * For a list of all SWT example snippets see
     * http://www.eclipse.org/swt/snippets/
     * 
     * @since 3.0
     */
     
    public class testframe {
     
     
    	public static void main(String[] args) {
    		new testframe();
    	}
     
    	public testframe() {
    		Display display = new Display();
    		Color red = display.getSystemColor(SWT.COLOR_RED);
    		Color blue = display.getSystemColor(SWT.COLOR_BLUE);
    		Shell shell = new Shell(display);
    		shell.setLayout(new FillLayout());
     
    		final Composite c1 = new Composite(shell, SWT.NONE);
    		FillLayout layout1 = new FillLayout();
    		c1.setLayout(layout1);
     
    		// set the minimum width and height of the scrolled content - method 2
    		final ScrolledComposite sc2 = new ScrolledComposite(c1, SWT.H_SCROLL
    				| SWT.V_SCROLL | SWT.BORDER);
    		sc2.setExpandHorizontal(true);
    		sc2.setExpandVertical(true);
     
    		final Composite c2 = new Composite(sc2, SWT.NONE);
    		sc2.setContent(c2);
    		GridLayout layout2 = new GridLayout();
    		layout2.numColumns = 4;
    		c2.setLayout(layout2);
     
    		for (int i = 0; i < 200; i++) {
     
    			Button button = new Button(c2, SWT.PUSH);
    			button.setText("button " + i);
    			sc2.setMinSize(c2.computeSize(SWT.DEFAULT, SWT.DEFAULT));
    			c2.layout();
    		}
    		shell.open();
    		while (!shell.isDisposed()) {
    			if (!display.readAndDispatch()) {
    				display.sleep();
    			}
    		}
    		display.dispose();
    	}
    }

    Voila. Le problème ne venait pas du contenant, mais du conteneur.

    @+

Discussions similaires

  1. Réponses: 14
    Dernier message: 04/11/2008, 10h25
  2. taille du curseur de scrollbar dans ChildView
    Par kacedda dans le forum MFC
    Réponses: 7
    Dernier message: 04/11/2008, 10h19
  3. [VB.NET] Disparition scrollBar dans une DataGrid
    Par aphykite dans le forum Windows Forms
    Réponses: 4
    Dernier message: 06/10/2004, 10h29
  4. Ajustement automatique de la taille de la police dans un TLabel
    Par Poisson Rouge dans le forum Composants VCL
    Réponses: 3
    Dernier message: 05/09/2003, 15h13
  5. [langage] Problème de taille de fichier à mettre dans
    Par And_the_problem_is dans le forum Langage
    Réponses: 10
    Dernier message: 13/08/2002, 09h41

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