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 :

Petit probleme ajustement Box dans BorderLayout


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 55
    Par défaut Petit probleme ajustement Box dans BorderLayout
    Salut,
    J'ai une Box horizontale qui contient un nombre variable de boutons que j'ai mise dans un BorderLayout qui couvre toute la JFrame. Mes boutons s'étendent donc de gauche à droite de ma fenetre. Le probleme c'est que lorsque je commence à avoir plus de boutons , il y a un décalage entre le bord droit de ma fenetre et mon dernier boutons(de quelques pixels). Je crois que c'est dû au fait que le BorderLayout donne la même taille à tous mes panels et que si le nombre de pixels de l'écran n'est pas divisible par ce nombre de boutons il y a un décalage. Comment régler le décalage?

    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
     Box tempo = Box.createHorizontalBox();
     
                boutonsJoueurs = new JButton[c.getJoueurs().length][3];
                for(int compteur = 0; compteur < c.getJoueurs().length; compteur++)
                {     
              boutonsJoueurs[compteur][0] = new JButton();       
            boutonsJoueurs[compteur][0].setLayout(new BorderLayout());
                   boutonsJoueurs[compteur][0].setBackground(Jo.transformeNumeroEnCouleur(tableauJoueurs[compteur].getCouleur()));
     
                   EcouteChangementJoueurs actionListener = new EcouteChangementJoueurs();
                   boutonsJoueurs[compteur][0].setEnabled(false);
     
                   {
                      {
                         JLabel labelTempo = new JLabel(tableauJoueurs[compteur].getNom());
                         labelTempo.setFont(new java.awt.Font("Book Antiqua", 3, 15));
                         labelTempo.setForeground(Jo.getCouleurOpposee(Jo.transformeNumeroEnCouleur(tableauJoueurs[compteur].getCouleur())));
                         boutonsJoueurs[compteur][0].add(labelTempo, BorderLayout.CENTER);
                      }
                      Box tempo2 = Box.createHorizontalBox();
                      {
     
                         tempo2.add(Box.createRigidArea(new Dimension(5, 0)));
                         tempo2.add(new JLabel(""+tableauJoueurs[compteur].getTotalGloire()));
                         tempo2.add(Box.createRigidArea(new Dimension(10, 0)));
                         boutonsJoueurs[compteur][1] = new JButton();
     
                         {
                            JLabel labelTempo = new JLabel("-");
                            labelTempo.setFont(new java.awt.Font("Book Antiqua", 0, 15));
                            labelTempo.setForeground(Color.white);
                            boutonsJoueurs[compteur][1].setBorder(null);
                            boutonsJoueurs[compteur][1].setBackground(Color.black);
                            boutonsJoueurs[compteur][1].setLayout(new BorderLayout());
                            boutonsJoueurs[compteur][1].add(Box.createRigidArea(new Dimension(8, 0)), BorderLayout.WEST);
                            boutonsJoueurs[compteur][1].add(labelTempo, BorderLayout.CENTER);
                            boutonsJoueurs[compteur][1].setMaximumSize(new Dimension(20,20));
                            boutonsJoueurs[compteur][1].addActionListener(actionListener);
                         }
                         tempo2.add(boutonsJoueurs[compteur][1]);
                         tempo2.add(Box.createRigidArea(new Dimension(1, 0)));
     
                         boutonsJoueurs[compteur][2] = new JButton();
                         {
                            JLabel labelTempo = new JLabel("+");
                            labelTempo.setFont(new java.awt.Font("Book Antiqua", 0, 15));
                            labelTempo.setForeground(Color.white);
                            boutonsJoueurs[compteur][2].setBorder(null);
                            boutonsJoueurs[compteur][2].setBackground(Color.black);
                            boutonsJoueurs[compteur][2].setLayout(new BorderLayout());
                            boutonsJoueurs[compteur][2].add(Box.createRigidArea(new Dimension(8, 0)), BorderLayout.WEST);
                            boutonsJoueurs[compteur][2].add(labelTempo, BorderLayout.CENTER);
                            boutonsJoueurs[compteur][2].setMaximumSize(new Dimension(20,20));
                            boutonsJoueurs[compteur][2].addActionListener(actionListener);
                         }
     
                         tempo2.add(boutonsJoueurs[compteur][2]);
                      }
     
                      boutonsJoueurs[compteur][0].add(tempo2, BorderLayout.SOUTH);
                   }
     
    tempo.add(boutonsJoueurs[compteur][0]);            }
     
                jPanel4.add(tempo, BorderLayout.NORTH);

  2. #2
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Je te suggèrerais bien de changer de layout, mais je sens que cela ne va pas te plaire

    J'avais eu une fois un problème qui ressemblait étrangement au tiens (mais c'est peut-être différent). Cela venait du fait de l'utilisation d'un maFrame.setResizable(false);
    J'avais réglé le problème en le mettant dans le constructeur de la fenêtre avant toute autre chose, du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Fenetre(String titre) {
    		super(titre);
    		setResizable(false);
    		...
    }
    En espérant que cela va t'aider...

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 55
    Par défaut
    Merci de l'aide mais je ne crois pas que le probleme vienne de là.

  4. #4
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Citation Envoyé par Agrapheuse Voir le message
    Je crois que c'est dû au fait que ... si le nombre de pixels de l'écran n'est pas divisible par ce nombre de boutons il y a un décalage.
    Je viens d'essayer ton code (chose que je n'avais pas faite) et je n'ai pas de décalage en premier, surement parce que j'ai fait un pack(). Mais lorsque l'on resize la fenêtre (et c'est nettement visible si on va doucement) il y a un décalage par palier, effectivement.

    De mon point de vue il vaudrait mieux utiliser d'autres layout plus évolués, permettant des stratégies de placement plus complexe. Je pense au GridBagLayout notamment.

    @+

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 55
    Par défaut
    Merci de l'aide, je vais essayer avec pack() ou un GridBagLayout.

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

Discussions similaires

  1. Petite probleme copier requete dans un nouveau table
    Par mihaispr dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 06/01/2010, 17h29
  2. petit probleme de pointeur dans strcat sur le projet de mes etudiant
    Par hamhama-group dans le forum Bibliothèque standard
    Réponses: 8
    Dernier message: 04/12/2007, 19h34
  3. Réponses: 6
    Dernier message: 02/08/2006, 18h24
  4. petit probleme dans un code : theoreme de pythagore
    Par ETI-trian dans le forum C++
    Réponses: 3
    Dernier message: 15/10/2005, 14h13
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 14h51

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