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

Agents de placement/Fenêtres Java Discussion :

Problème de dimension avec GridBagLayout


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Points : 80
    Points
    80
    Par défaut Problème de dimension avec GridBagLayout
    Bonjour, j'ai un problème avec un panel avec un GridBagLayout.
    J'ai placé des composant sur une grille 3*3 dans un panel.

    Je ne sais pas si vous aurez besoin de regarder mon code mais dans le doute, je le met :

    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
    private GridBagConstraints constraintsPrincipal  = new GridBagConstraints();
     
    panelPrincipal.setLayout(new GridBagLayout());
     
    constraintsPrincipal.gridx = 0;
    constraintsPrincipal.gridy = 0;
    constraintsPrincipal.gridwidth = 3;
    constraintsPrincipal.gridheight = 1;
    constraintsPrincipal.ipady = 35;
    constraintsPrincipal.fill = GridBagConstraints.HORIZONTAL;
     
    panel1.setBorder(BorderFactory.createTitledBorder("Exploitations"));
    panel1.setOpaque(false);
    panelPrincipal.add(panel1,constraintsPrincipal);
     
    //////////////////////////////////////////////////////
     
    constraintsPrincipal.gridx = 0;
    constraintsPrincipal.gridy = 1;
    constraintsPrincipal.gridwidth = 3;
    constraintsPrincipal.gridheight = 1;
    constraintsPrincipal.fill = GridBagConstraints.HORIZONTAL;
     
    table1 = new JTable(modeleDynamique1);
    JScrollPane scrollPane1 = new JScrollPane(table1);
    panelPrincipal.add(scrollPane1,constraintsPrincipal);
     
    //////////////////////////////////////////////////////
     
    constraintsPrincipal.gridx = 0;
    constraintsPrincipal.gridy = 2;
    constraintsPrincipal.gridwidth = 1;
    constraintsPrincipal.gridheight = 1;
     
    table2 = new JTable(modeleDynamique2);
    JScrollPane scrollPane2 = new JScrollPane(table2);
    panelPrincipal.add(scrollPane2,constraintsPrincipal);
     
    //////////////////////////////////////////////////////
     
    constraintsPrincipal.gridx = 1;
    constraintsPrincipal.gridy = 2;
    constraintsPrincipal.gridwidth = 1;
    constraintsPrincipal.gridheight = 1;
     
    table3 = new JTable(modeleDynamique3);
    JScrollPane scrollPane3 = new JScrollPane(table3);
    panelPrincipal.add(scrollPane3,constraintsPrincipal);
     
    //////////////////////////////////////////////////////
     
    constraintsPrincipal.gridx = 2;
    constraintsPrincipal.gridy = 2;
    constraintsPrincipal.gridwidth = 1;
    constraintsPrincipal.gridheight = 1;
     
    table4 = new JTable(modeleDynamique4);
    JScrollPane scrollPane4 = new JScrollPane(table4);
    panelPrincipal.add(scrollPane4,constraintsPrincipal);

    Tout s'affiche aux emplacements voulus.

    Mon problème est que mon panelPrincipal ne tiens pas dans la fenêtre et je ne comprend pas pourquoi vu qu'il n'y a pas de taille de réglée.

    J'ai volontairement omis de choisir des tailles pour que les composants (ou au moins l'espace entre eux varie en fonction de la taille de la fenêtre.

    Avez-vous une idée ?

    Merci.
    Bonne soirée.

  2. #2
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Bonsoir,

    Tu as donné la partie de ton code avec les composants dans le panelPrincipal, si tu as un soucis avec la Jframe et le panelPrincipal il faudrait mettre le code ou tu le met dans la frame.

    Comme sa tu as le pack() qui peux poser problème si tu l'as utilisé ou si ta frame as un layout ou non enfin beaucoup de possibilité.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Points : 80
    Points
    80
    Par défaut
    En fait j'ai mis à ma JFrame un GridLayout où j'ai insérer un panel.
    J'ai fais ceci pour facilement mettre une image en fond.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.getContentPane().setLayout(new GridLayout(1, 1));
    J'ai mis un BorderLayout à ce panel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    panelFond.setLayout(new BorderLayout());
    et j'ai mis ce panel dans un JScrollPane :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JScrollPane scrollPaneGeneral = new JScrollPane(panelFond);
    this.getContentPane().add(scrollPaneGeneral);
    J'ai un panel dans la partie NORTH, un dans WEST et celui qui me pose problème dans CENTER.

    Je pensais que le problème venais du GridBagLayout car tant que je ne remplis pas mon panel dans CENTER je n'ai pas de problème d'affichage.

    Depuis que j'ai utilisé ce GridBagLayout, mon panel de fond (tout premier panel dans lequel est contenu l'image de fond) à grandis et ne tiens plus dans la fenêtre.

  4. #4
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    1/ Petite remarque :

    le grid au début sur ta JFrame ne sert à rien. Tu peux faire directement this.add(scrollPaneGeneral) sachant que le layout par défaut d'une frame est le borderLayout.

    Ensuite

    2/ Sur ton panel de fond tu as mis un BorderLayout donc il se redimensionera automatiquement avec le panel que tu mettras dans le Center, panelPrincipal si j'ai bien compris.

    panelPrincipal contient beaucoup de chose qui a mon avis dépasse la taille que tu souhaites pour ta Frame donc quand tu le places dans le center de la frame, zou sa grandi tout ^_^.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Points : 80
    Points
    80
    Par défaut
    Dans ce cas, comment est-ce qu'il faut que je fasse ?

    Avant, je n'utilisait pas de layout et tout tenait parfaitement par contre rien ne se redimensionnait au changement de taille de la fenêtre.

    Est-ce que je peux réduire la taille des JTable en fonction de la taille de la fenêtre ou forcer les composants du borderlayout à ne pas dépasser la taille de la fenêtre ?

    J'ai aussi essayé de mettre une taille préféré. Dans ce cas, les composants tiennent dans mon panelPrincipal mais ne se redimensionne pas lorsque j'étire la fenêtre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dimension SizeScrollPane2 = new Dimension(600, 200);
    scrollPane2.setPreferredSize(SizeScrollPane2);
     
    Dimension SizeScrollPane3 = new Dimension(200, 200);
    scrollPane3.setPreferredSize(SizeScrollPane3);
     
    Dimension SizeScrollPane4 = new Dimension(200, 200);
    scrollPane4.setPreferredSize(SizeScrollPane);
     
    Dimension SizeScrollPane5 = new Dimension(200, 200);
    scrollPane5.setPreferredSize(SizeScrollPane5);

  6. #6
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Bonjour,

    humm comme sa une idée, tu peux utiliser les setPreferredSize avec un pack, l'objectif est de définir une taille de preference pour tes composants quand tu feras frame.pack() tous les composants prendront la taille du setPreferredSize.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Points : 80
    Points
    80
    Par défaut
    C'est bon, j'ai résolu mon problème.
    Avec setPreferredSize, weightx et weighty j'arrive à tout régler.

    Merci pour ton aide.

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

Discussions similaires

  1. Problème de dimensions avec QHBoxLayout
    Par keke222 dans le forum Qt
    Réponses: 4
    Dernier message: 26/11/2012, 08h33
  2. [Débutant] problème de dimensions avec une matrice
    Par alexov dans le forum MATLAB
    Réponses: 3
    Dernier message: 08/06/2011, 18h38
  3. Problèmes d'agencement avec GridBagLayout
    Par -The_Reaper- dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 02/08/2010, 14h17
  4. Problème de dimensions avec le thème Vista.
    Par Cravis dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 24/07/2009, 18h34
  5. Réponses: 11
    Dernier message: 03/03/2006, 16h36

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