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

 Java Discussion :

GridBagLayout - probleme d'affichage


Sujet :

Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut GridBagLayout - probleme d'affichage
    Bonjour à tous,
    Je suis débutant et j'ai un petit soucis avec l'utilisation du gridbaglayout. Je souhaite afficher un genre de calendrier qui affiche chaque jour du mois sous forme d'un bouton et en commençant par le jour de la semaine correspondant au premier du mois. D'où l'utilisation du GridBagLayout.

    J'ai donc fait une liste de boutons que j'ajoute au panel grâce à 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
    this.setLayout(new GridBagLayout());
    		GridBagConstraints gbc = new GridBagConstraints();
     
    		for (JButton jButton : listButton){
    			if(x<=7){
    				gbc.gridx=x;
    				gbc.gridy=y;
     
    				gbc.gridwidth=1;
    				gbc.gridheight=1;
    				this.add(jButton);
    				x++;
    			}
    			else{
    				gbc.gridx=x;
    				gbc.gridy=y;
    				gbc.gridwidth = GridBagConstraints.REMAINDER;
    				gbc.gridwidth=1;
    				gbc.gridheight=1;
    				this.add(jButton);
    				x=1;
    				y++;
    			}
    		}
    et rien ne s'affiche comme je le veux. Tout reste sur une seule ligne.

    Merci d'avance.

  2. #2
    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,

    Si tout reste sur une seule ligne, c'est parce que tu n'utilises pas la contrainte. Il faut la passer en paramètre this.add(jButton, gbc);.

    Sinon, ton layout n'est probablement pas celui que tu veux obtenir. En fait, tu devrais incrémenter x après chaque ajout de bouton, et si son modulo par 7 est 0, incrémenter y et remettre x à 0 pour passer à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    gbc.gridx=0;
    gbc.gridy=0;
    gbc.gridwidth=1;
    gbc.gridheight=1;
    for (JButton jButton : listButton){
        this.add(jButton, gbc);
        gbc.gridx++;
        if ( gbc.gridx%7==0 ) {
            gbc.gridy++;
    	gbc.gridx=0;
        }
    }
    Tes boutons seront dimensionnés par rapport à leur texte, donc de tailles à priori différentes : pour les avoir de même taille, il faudra juste ajouter une contrainte FILL (gbc.fill=GridBagConstraints.BOTH;)
    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.

  3. #3
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Par contre vu le besoin que tu as, je ne suis pas sur que tu sois obligé de passer par un GridBagLayout, un GridLayout suffirait. Et un GridLayout est bien plus simple à gérer.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    merci à toi,

    tout est ok. le problme du gridLayout ici c'est que je récupère la variable x, et ele vaut le numéro du jour de la semaine.
    car je voudrai en fonction du mois que les premiers jours ne soit pas forcément remplis.

    et je n'ai rien trouver avec un gridlayout pour "passer" des cases.

  5. #5
    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
    Il suffit de faire commencer gridx à la valeur que tu veux (au lieu de gbc.gridx=0; au début de mon exemple, faire gbc.gridx=x;), ça décalera d'autant.



    Cela fonctionne parce qu'il n'y a pas de mois de moins de 7 jours, sinon effectivement les cases vides feront 0 pixel de large : dans ce cas, tu peux simplement mettre un composant vide (JPanel, JLabelt) avec une taille forcée (setPreferredSize(...)).
    Avec un GridLayout, tu mets des composants vides pour remplir les cases vides, dans tous les cas (et pas besoin de setPreferredSize() dans ton cas). Règle le GridLayout avec un nombre de colonnes fixe (à 7), ainsi pas besoin de gérer le nombre de lignes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(int i=0;i<x;i++) {
       this.add( new JLabel() );
    }
    for(JButton button : /*...*/
    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.

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

Discussions similaires

  1. [VB.NET] Probleme d'affichage entre ListBox/TextBox
    Par Monster77 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/08/2004, 11h02
  2. [VB.NET] Probleme d'affichage de controle
    Par mic56 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 09/06/2004, 15h03
  3. xml-xsl-fo : probleme d'affichage d'un tableau
    Par clindoeil dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 12/12/2003, 12h46
  4. [langage] Problème d'affichage
    Par marcoss dans le forum Langage
    Réponses: 3
    Dernier message: 29/08/2003, 13h05
  5. IE [Applet] Plug-in problème d'affichage
    Par Tonton Luc dans le forum JBuilder
    Réponses: 4
    Dernier message: 19/06/2003, 08h28

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