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 :

Mettre une scroll bar dans un group


Sujet :

SWT/JFace Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut Mettre une scroll bar dans un group
    Bonjour à tous,

    j'essaye de mettre un scroll bar dans un group pour ensuite mettre une taille fixe à ce group. Cependant je n'y arrive pas. Avec le code ci dessous le group (le premier) ne s'affiche pas.

    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
    public class MyPageSeven extends WizardPage {
     
    	private ParametrageControllerPageSeven parametrageControllerPageSeven = null;
    	private Composite container = null;
    	private Composite comp = null;
    	private Composite parent = null;
    	private ArrayList<String> listMat = null;
     
     
    	public MyPageSeven(Composite container) {
     
    	    super("Septième page");
    	    parametrageControllerPageSeven = new ParametrageControllerPageSeven(this);
    	    this.container = container;
     
      	}
     
    	@Override
    	public void createControl(Composite parent) {
    		this.parent = parent;
    		comp = new Composite(parent, SWT.CENTER);
    		GridLayout grid = new GridLayout(3,false);
    		comp.setLayout(grid);
    		Label labelTitre = new Label(comp,SWT.NONE);
    		labelTitre.setText("Informations concernants les numéros de configuration");
    		labelTitre.setFont(new Font(null,"Arial",14,0));
    		GridData titreGD = new GridData(SWT.CENTER, SWT.ARROW, true, false);
    		titreGD.horizontalSpan = 4;
    		titreGD.heightHint = 40;
    		ScrolledComposite scrolledComposite = new ScrolledComposite (comp, SWT.V_SCROLL);
    		labelTitre.setLayoutData(titreGD);
    		Group groupTT = new Group(scrolledComposite,SWT.NONE);
    		scrolledComposite.setContent(groupTT);
    		Group groupOM = new Group(comp,SWT.NONE);
    		Group groupOT = new Group(comp,SWT.NONE);
     
    		GridLayout gridTT = new GridLayout(2,false);
    		groupTT.setLayout(gridTT);
    		Label labelTTtitre = new Label(groupTT,SWT.NONE);
    		labelTTtitre.setText("Renommer les Tests Type");
    		labelTTtitre.setFont(new Font(null,"Arial",10,0));
    		GridData ttGridData = new GridData(GridData.FILL_HORIZONTAL);
    		ttGridData.horizontalSpan = 2;
    		labelTTtitre.setLayoutData(ttGridData);
    		listMat = MyWizard.one.getListTableChecked();
    		String name = MyWizard.one.getName();
    		java.util.List<String> nameMatSansAff = new ArrayList<String>();
    		for(int i = 0; i<listMat.size(); i++){
    			String[] nameMat = listMat.get(i).split(name);
    			nameMatSansAff.add(nameMat[0]);
    		}
     
    		java.util.List<String> nameTestType = new ArrayList<String>();
    		for(int i = 0; i<nameMatSansAff.size(); i++){
    			String[] nameTT = nameMatSansAff.get(i).split("_");
    			boolean exist = false;
    			for(int t = 0; t<nameTT.length; t++){
    				for(int j = 0; j<nameTestType.size(); j++){
    					if(nameTT[t].equals(nameTestType.get(j))){
    						exist = true;
    					}
    				}
    				if(!exist){
    					nameTestType.add(nameTT[t]);
    				}
    			}
    		}
     
    		for(int i=0; i<nameTestType.size(); i++){
    			Label labelTT = new Label(groupTT,SWT.NONE);
    			labelTT.setText(nameTestType.get(i));
    			labelTT.setFont(new Font(null,"Arial",9,0));
    			Text textTT = new Text(groupTT,SWT.BORDER);
    			textTT.setText(nameTestType.get(i)+"_");
    			GridData textGD = new GridData(GridData.FILL_HORIZONTAL);
    			textGD.widthHint = 100;
    			textTT.setLayoutData(textGD);
    		}
     
    		setControl(comp);
    		setPageComplete(true);
     
    	}
    }
    Avez vous une idée ? Je vous remercie

    Crodialement,

    Leniouns

  2. #2
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    Bonjour,

    Vous pouvez mettre un ScrolledComposite a l'intérieur de votre groupe et mettre le reste des controls dans le ScrolledComposite.

  3. #3
    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 manque des paramètres à ton ScrolledComposite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    scrolledComposite.setExpandHorizontal(true);
    scrolledComposite.setExpandVertical(true);
    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    J'ai rajouté

    scrolledComposite.setExpandHorizontal(true);
    scrolledComposite.setExpandVertical(true);

    Maintenant ce qu'il y a à l'intérieur du groupe s'affiche, cependant la scroll bar ne s'affiche pas.

    aityahia, je ne vois pas trop ce que tu veux faire.

  5. #5
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    oups j'avais pas remarqué qu'il avait mis un ScrolledComposite

  6. #6
    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
    Il faut que tu mettes une taille à ton ScrolledComposite. Généralement, tu lui demandes de prendre la taille de son contenant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scrolledComposite.setSize(groupTT.computeSize(SWT.DEFAULT, SWT.DEFAULT));
    Pas de questions technique par MP, les forums sont là pour ça.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Bonjour,

    J'ai fait ceci :

    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
    public void createControl(Composite parent) {
    		this.parent = parent;
    		comp = new Composite(parent, SWT.CENTER);
    		GridLayout grid = new GridLayout(3,false);
    		comp.setLayout(grid);
    		Label labelTitre = new Label(comp,SWT.NONE);
    		labelTitre.setText("Informations concernants les numéros de configuration");
    		labelTitre.setFont(new Font(null,"Arial",14,0));
    		GridData titreGD = new GridData(SWT.CENTER, SWT.ARROW, true, false);
    		titreGD.horizontalSpan = 4;
    		titreGD.heightHint = 40;
    		ScrolledComposite scrolledComposite = new ScrolledComposite (comp, SWT.V_SCROLL);
    		labelTitre.setLayoutData(titreGD);
    		Group groupTT = new Group(scrolledComposite,SWT.NONE);
    		scrolledComposite.setContent(groupTT);
    		scrolledComposite.setSize(groupTT.computeSize(SWT.DEFAULT, SWT.DEFAULT));
    		scrolledComposite.setExpandHorizontal(true);
    		scrolledComposite.setExpandVertical(true);
    		Group groupOM = new Group(comp,SWT.NONE);
    		Group groupOT = new Group(comp,SWT.NONE);
     
    		GridLayout gridTT = new GridLayout(2,false);
    		groupTT.setLayout(gridTT);
    		Label labelTTtitre = new Label(groupTT,SWT.NONE);
    		labelTTtitre.setText("Renommer les Tests Type");
    		labelTTtitre.setFont(new Font(null,"Arial",10,0));
    		GridData ttGridData = new GridData(GridData.FILL_HORIZONTAL);
    		ttGridData.horizontalSpan = 2;
    		labelTTtitre.setLayoutData(ttGridData);
    		listMat = MyWizard.one.getListTableChecked();
    		String name = MyWizard.one.getName();
    		java.util.List<String> nameMatSansAff = new ArrayList<String>();
    		for(int i = 0; i<listMat.size(); i++){
    			String[] nameMat = listMat.get(i).split(name);
    			nameMatSansAff.add(nameMat[0]);
    		}
     
    		java.util.List<String> nameTestType = new ArrayList<String>();
    		for(int i = 0; i<nameMatSansAff.size(); i++){
    			String[] nameTT = nameMatSansAff.get(i).split("_");
    			boolean exist = false;
    			for(int t = 0; t<nameTT.length; t++){
    				for(int j = 0; j<nameTestType.size(); j++){
    					if(nameTT[t].equals(nameTestType.get(j))){
    						exist = true;
    					}
    				}
    				if(!exist){
    					nameTestType.add(nameTT[t]);
    				}
    			}
    		}
     
    		for(int i=0; i<nameTestType.size(); i++){
    			Label labelTT = new Label(groupTT,SWT.NONE);
    			labelTT.setText(nameTestType.get(i));
    			labelTT.setFont(new Font(null,"Arial",9,0));
    			Text textTT = new Text(groupTT,SWT.BORDER);
    			textTT.setText(nameTestType.get(i)+"_");
    			GridData textGD = new GridData(GridData.FILL_HORIZONTAL);
    			textGD.widthHint = 100;
    			textTT.setLayoutData(textGD);
    		}
     
    		setControl(comp);
    		setPageComplete(true);
     
    	}
    Mais ça ne marche toujours pas

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    il faut dire à ton scrolledComposite qu'elle est la taille minimum de son contenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scrolledComposite.setMinSize(groupTT.computeSize(SWT.DEFAULT, SWT.DEFAULT));
    quand tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scrolledComposite.setSize(groupTT.computeSize(SWT.DEFAULT, SWT.DEFAULT));
    tu donnes une taille au composant, mais cette taille est recalculée par le GridLayout que tu as mis sur son parent, donc ça ne sert à rien
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Merci de votre aide mais ça ne marche toujours pas.

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    normalement, le GridLayout va ajouter le GridData qui manque sur ton scrolled composite, mais essaye toujours de le mettre explicitement pour voir.

    je vais regarder de mon coté plus en détail ton code pour voir si je vois un autre problème
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  11. #11
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    je viens de regarder ton code vite fait : tu demandes le calcul de la taille de ton composant avant d'y ajouter les sous-composants !

    il faut évidemment demander le calcul de la taille du composant après ta boucle d'ajout des labels et texts dans ton groupe.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    D'accord.J'ai donc mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    scrolledComposite.setMinSize(groupTT.computeSize(SWT.DEFAULT, SWT.DEFAULT));
    		scrolledComposite.setExpandHorizontal(true);
    		scrolledComposite.setExpandVertical(true);
    après ma boucle d'ajout des composants. Cependant la scroll bar ne s'affiche toujours pas.

  13. #13
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    le problème doit venir du faire que ton parent à une taille non finie, donc ton scrolled composite prend la taille maximum qu'il peut avoir.

    tu dois donc t'arranger pour que ton composant ait une hauteur finie.

    tu peux faire par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GridDataFactory.swtDefaults().grab(true, true).hint(SWT.DEFAULT, fixedHeight).applyTo(scrolledComposite);
    ou fixedHeight est la hauteur de ton composant.

    si tu veux que ton composant prennent toute la hauteur disponible il faudrait écouter le parent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    comp.addControlListener(new ControlAdapter() {
     
    				public void controlResized(ControlEvent e) {
    					((GridData)scrolledComposite.getLayoutData()).heightHint=Math.min(
    							Math.max(0, comp.getSize().y-scrolledComposite.getLocation().y), scrolledComposite.getMinHeight());
    					comp.layout(true,true);
    				}
    			});
    mais ça ne fonctionnera que si tu configures le layout de comp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GridDataFactory.swtDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(comp);
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Je ne sais pas si tu as oublié quelque chose après le "et" ?

    Sinon comment je fixe la hauteur de mon composant ? Et quand tu parles de composant tu parles bien de mon "comp" ?

  15. #15
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Leniouns Voir le message
    Je ne sais pas si tu as oublié quelque chose après le "et" ?

    Sinon comment je fixe la hauteur de mon composant ? Et quand tu parles de composant tu parles bien de mon "comp" ?
    non j'ai juste oublié d'enlever le "et"

    je parle de la hauteur du scrolled composite, comme on le voit dans l'exemple que j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GridDataFactory.swtDefaults().grab(true, true).hint(SWT.DEFAULT, fixedHeight).applyTo(scrolledComposite);
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Oui mais je n'ai pas trop compris sur quoi et comment définir fixedHeight ?

  17. #17
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    bah en fait c'est une valeur arbitraire en pixels, par exemple 100.

    tu peux la calculer aussi par rapport à la hauteur de ton moniteur, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scrolledComposite.getMonitor().getClientArea().height/5;
    pour le 5ème de la hauteur de ton écran

    si tu veux que cette valeur soit une fraction de la hauteur de la fenêtre, utilise le même système que pour l'adaptation à la hauteur disponible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    comp.getShell().addControlListener(new ControlAdapter() {
     
    				public void controlResized(ControlEvent e) {
    					((GridData)scrolledComposite.getLayoutData()).heightHint=
    							Math.max(0, comp.getShell().getSize().y/5); // 5ème de la hauteur de la fenêtre
    					comp.layout(true,true);
    				}
    			});
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Bon je t'avoues que je suis un peu perdu.

    J'ai fait ça :

    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
    public void createControl(Composite parent) {
    		this.parent = parent;
    		comp = new Composite(parent, SWT.CENTER);
    		GridDataFactory.swtDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(comp);
    		GridLayout grid = new GridLayout(3,false);
    		comp.setLayout(grid);
    		Label labelTitre = new Label(comp,SWT.NONE);
    		labelTitre.setText("Informations concernants les numéros de configuration");
    		labelTitre.setFont(new Font(null,"Arial",14,0));
    		GridData titreGD = new GridData(SWT.CENTER, SWT.ARROW, true, false);
    		titreGD.horizontalSpan = 4;
    		titreGD.heightHint = 40;
    		scrolledComposite = new ScrolledComposite (comp, SWT.V_SCROLL);
    		labelTitre.setLayoutData(titreGD);
    		Group groupTT = new Group(scrolledComposite,SWT.NONE);
    		scrolledComposite.setContent(groupTT);
    		comp.getShell().addControlListener(new ControlAdapter() {
     
    			public void controlResized(ControlEvent e) {
    				((GridData)scrolledComposite.getLayoutData()).heightHint=
    						Math.max(0, comp.getShell().getSize().y/5); // 5ème de la hauteur de la fenêtre
    				comp.layout(true,true);
    			}
    		});
     
    		Group groupOM = new Group(comp,SWT.NONE);
    		Group groupOT = new Group(comp,SWT.NONE);
     
    		GridLayout gridTT = new GridLayout(2,false);
    		groupTT.setLayout(gridTT);
    		Label labelTTtitre = new Label(groupTT,SWT.NONE);
    		labelTTtitre.setText("Renommer les Tests Type");
    		labelTTtitre.setFont(new Font(null,"Arial",10,0));
    		GridData ttGridData = new GridData(GridData.FILL_HORIZONTAL);
    		ttGridData.horizontalSpan = 2;
    		labelTTtitre.setLayoutData(ttGridData);
    		listMat = MyWizard.one.getListTableChecked();
    		String name = MyWizard.one.getName();
    		java.util.List<String> nameMatSansAff = new ArrayList<String>();
    		for(int i = 0; i<listMat.size(); i++){
    			String[] nameMat = listMat.get(i).split(name);
    			nameMatSansAff.add(nameMat[0]);
    		}
     
    		nameTestType = new ArrayList<String>();
    		for(int i = 0; i<nameMatSansAff.size(); i++){
    			String[] nameTT = nameMatSansAff.get(i).split("_");
    			boolean exist = false;
    			for(int t = 0; t<nameTT.length; t++){
    				for(int j = 0; j<nameTestType.size(); j++){
    					if(nameTT[t].equals(nameTestType.get(j))){
    						exist = true;
    					}
    				}
    				if(!exist){
    					nameTestType.add(nameTT[t]);
    				}
    			}
    		}
     
    		for(int i=0; i<nameTestType.size(); i++){
    			Label labelTT = new Label(groupTT,SWT.NONE);
    			labelTT.setText(nameTestType.get(i));
    			labelTT.setFont(new Font(null,"Arial",9,0));
    			Text textTT = new Text(groupTT,SWT.BORDER);
    			textTT.setText(nameTestType.get(i)+"_");
    			textTT.addSelectionListener(new NumConfSelectionListener(parametrageControllerPageSeven));
    			GridData textGD = new GridData(GridData.FILL_HORIZONTAL);
    			textGD.widthHint = 100;
    			textTT.setLayoutData(textGD);
    			listTT.add(textTT);
    		}
    		scrolledComposite.setMinSize(groupTT.computeSize(SWT.DEFAULT, SWT.DEFAULT));
    		scrolledComposite.setExpandHorizontal(true);
    		scrolledComposite.setExpandVertical(true);
    }
    Mais la scrollbar ne s'affiche pas...

  19. #19
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    voici un exemple fait à partir de ton code avec lequel j'ai bien ma scroll bar qui s'affiche (quand c'est nécessaire bien sûr) :

    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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    public class TestSWT {
     
    	public static void main(String[] args) {
     
    		Display display = new Display();
     
    		try {
    		test(display);
    		}
    		finally {
    			display.dispose();
    		}
     
    	}
     
    	private static void test(Display display) {
    		Shell shell = new Shell(display);
     
    		GridLayoutFactory.swtDefaults().applyTo(shell);
    		createControl(shell);
     
     
    		shell.pack ();
    		shell.open ();
    		while (!shell.isDisposed ()) {
    			if (!display.readAndDispatch ()) display.sleep ();
    		}
     
    	}
     
     
    	private static void createControl(final Composite parent) { 
    			final Composite comp = new Composite(parent, SWT.NONE);
    			GridDataFactory.swtDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(comp);
    			GridLayoutFactory.fillDefaults().spacing(LayoutConstants.getSpacing()).numColumns(3).equalWidth(false).applyTo(comp);
     
    			Label labelTitre = new Label(comp,SWT.NONE);
    			labelTitre.setText("Informations concernants les numéros de configuration");
    			//labelTitre.setFont(new Font(null,"Arial",14,0)); // pas de dispose !
    			GridData titreGD = new GridData(SWT.FILL, SWT.CENTER, true, false);
    			titreGD.horizontalSpan = 4;
    			titreGD.heightHint = 40;
    			final ScrolledComposite scrolledComposite = new ScrolledComposite (comp, SWT.V_SCROLL);
    			GridDataFactory.fillDefaults().align(SWT.FILL,SWT.FILL).grab(false, false).applyTo(scrolledComposite);
    			labelTitre.setLayoutData(titreGD); 
    					final Group groupTT = new Group(scrolledComposite,SWT.NONE);
    			GridDataFactory.fillDefaults().align(SWT.FILL,SWT.FILL).grab(false, false).applyTo(groupTT);
    			scrolledComposite.setContent(groupTT); 
     
    			Group groupOM = new Group(comp,SWT.NONE);
    			Group groupOT = new Group(comp,SWT.NONE);
    			GridLayout gridTT = new GridLayout(2,false);
    			groupTT.setLayout(gridTT);
     
     
    			Label labelTTtitre = new Label(groupTT,SWT.NONE);
    			labelTTtitre.setText("Renommer les Tests Type");
    			//labelTTtitre.setFont(new Font(null,"Arial",10,0)); // pas de dispose !
    			GridData ttGridData = new GridData(GridData.FILL_HORIZONTAL);
    			ttGridData.horizontalSpan = 2;
    			labelTTtitre.setLayoutData(ttGridData);
    			/*listMat = MyWizard.one.getListTableChecked();
    			//String name = MyWizard.one.getName();
    			java.util.List<String> nameMatSansAff = new ArrayList<String>();
    			for(int i = 0; i<listMat.size(); i++){
    				String[] nameMat = listMat.get(i).split(name);
    				nameMatSansAff.add(nameMat[0]);
    			}*/
     
    			/*java.util.List<String> nameTestType = new ArrayList<String>();
    			for(int i = 0; i<nameMatSansAff.size(); i++){
    				String[] nameTT = nameMatSansAff.get(i).split("_");
    				boolean exist = false;
    				for(int t = 0; t<nameTT.length; t++){
    					for(int j = 0; j<nameTestType.size(); j++){
    						if(nameTT[t].equals(nameTestType.get(j))){
    							exist = true;
    						}
    					}
    					if(!exist){
    						nameTestType.add(nameTT[t]);
    					}
    				}
    			}*/
     
    			for(int i=0; i<10; i++){
    				Label labelTT = new Label(groupTT,SWT.NONE);
    				labelTT.setText("toto"+i);
    				//labelTT.setFont(new Font(null,"Arial",9,0)); // pas de dispose !
    				Text textTT = new Text(groupTT,SWT.BORDER);
    				textTT.setText("");
    				GridData textGD = new GridData(GridData.FILL_HORIZONTAL);
    				textGD.widthHint = 100;
    				textTT.setLayoutData(textGD);
    			}
     
    			scrolledComposite.setMinSize(groupTT.computeSize(SWT.DEFAULT, SWT.DEFAULT));
    			scrolledComposite.setExpandHorizontal(true);
    			scrolledComposite.setExpandVertical(true);
     
    			comp.getShell().addControlListener(new ControlAdapter() {
     
    				public void controlResized(ControlEvent e) {
    					((GridData)scrolledComposite.getLayoutData()).heightHint=
    							Math.max(0, comp.getShell().getSize().y/5);
    					comp.layout(true,true);
    				}
    			});
     
    			/*// avec ça la scrolled composite s'adapter à la hauteur de la fenêtre disponible au dessous du scrolled composite
    			 // ne fonctionne que s'il n'y a pas de composant en dessous (il faudrait retirer la hauteur prise par ces composants)
    			  comp.addControlListener(new ControlAdapter() {
     
    				public void controlResized(ControlEvent e) {
    					((GridData)scrolledComposite.getLayoutData()).heightHint=Math.min(
    							Math.max(0, comp.getSize().y-scrolledComposite.getLocation().y), scrolledComposite.getMinHeight());
    					comp.layout(true,true);
    				}
    			});*/
    	}
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Moi je ne vois pas la scrollbar mais je me demande si ce n'est pas parceque mon Group grandit au fur et à mesure qu'il y a des composants. Comment faire pour lui donner une taille fixe ?

Discussions similaires

  1. Scroll bar dans une table c#
    Par makertoo dans le forum C#
    Réponses: 3
    Dernier message: 12/09/2013, 09h34
  2. Récupérer position scroll bar dans une div
    Par abdelmounaime dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/09/2012, 06h51
  3. scroll bar dans une Grid dans un TabPanel
    Par ffert2907 dans le forum Ext JS / Sencha
    Réponses: 2
    Dernier message: 04/11/2009, 22h23
  4. Réponses: 3
    Dernier message: 02/09/2008, 12h32
  5. Utiliser une scroll bar dans une fenêtre
    Par Silverstone dans le forum C++
    Réponses: 1
    Dernier message: 29/12/2006, 00h51

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