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 :

[BorderLayout] Comment ajouter des dimensions aux composants ?


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Points : 67
    Points
    67
    Par défaut [BorderLayout] Comment ajouter des dimensions aux composants ?
    en partant du code fourni dans la FAQ de java:

    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
     
    class BorderLayoutFrame extends JFrame
    {
        public BorderLayoutFrame ()
        {
            setTitle("BorderLayout Test");
            setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
     
            Container c = getContentPane();
     
            // ------------ par défaut pour le JFrame ------------
            // setLayout(new BorderLayout());
     
            c.add(makeLabel("  NORD  "),BorderLayout.NORTH);
            c.add(makeLabel("  SUD  "),BorderLayout.SOUTH);   
            c.add(makeLabel("  EST  "),BorderLayout.EAST);
            c.add(makeLabel("  OUEST  "),BorderLayout.WEST);
            c.add(makeLabel("  CENTRE  "),BorderLayout.CENTER);       
     
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
     
        private JLabel makeLabel(String text)
        {
            JLabel label = new JLabel(text,JLabel.CENTER);
            Border borderLine = BorderFactory.createLineBorder(Color.BLACK);
            label.setBorder(borderLine);
            return label;
        }
     
        static final int DEFAULT_WIDTH = 200;
        static final int DEFAULT_HEIGHT = 150;
    }
    Comment modifier le code afin que chaque label par exemple ait une dimension precise tout en restant dans ce layout? il n'y a pas un risque de debordement si les dimensions fournies depassent celles de la fenetre principale?

    merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Points : 67
    Points
    67
    Par défaut
    je crois que ce layout ne permet pas de gerer les dimensions des differents composants , quelqu'un a t il une idee meilleure , je veux a tout prix garder cette organisation interne des zones mais en leur donner des dimensions differentes ( comme les frames en html par exemple, et la zone du centre dans mon cas est la plus grande)

    aidez moi svp c'est un peu urgent
    merci

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    À mon avis, si tu donnes à tes composants une taille préférée, le BorderLayout s'en souciera.

    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
    class BorderLayoutFrame extends JFrame
    {
        public BorderLayoutFrame () {
            setTitle("BorderLayout Test");
            setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
     
            Container c = getContentPane();
     
            // ------------ par défaut pour le JFrame ------------
            // setLayout(new BorderLayout());
     
            c.add(makeLabel("NORD", 0, 30),BorderLayout.NORTH);
            c.add(makeLabel("SUD", 0, 30),BorderLayout.SOUTH);   
            c.add(makeLabel("EST", 50, 0),BorderLayout.EAST);
            c.add(makeLabel("OUEST", 50, 0),BorderLayout.WEST);
            c.add(makeLabel("CENTRE", 0, 0),BorderLayout.CENTER);
     
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
     
        private JLabel makeLabel(String text, int largeur, int hauteur)
        {
            JLabel label = new JLabel(text,JLabel.CENTER);
            Border borderLine = BorderFactory.createLineBorder(Color.BLACK);
            label.setBorder(borderLine);
            label.setPreferredSize(new Dimension(largeur, hauteur));
            return label;
        }
     
        static final int DEFAULT_WIDTH = 200;
        static final int DEFAULT_HEIGHT = 150;
     
    }
    Là où il y a des 0, c'est que la largeur ou la hauteur ne sera de toute manière pas respectée par le BorderLayout.

    Toutefois, n'utilisant plus le BorderLayout depuis bien longtemps, je ne sais pas si cela fera exactement ce que tu souhaites.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Points : 67
    Points
    67
    Par défaut
    Ok je vais essayer cela, mais sinon d'aprés toi quel layout pourrait bien être plus adapté a la situation? le gridbaglayout ?

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Le GridBagLayout en effet, ou un autre, comme le TableLayout, voire des bien plus complexes encore comme le ExplicitLayout.

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

Discussions similaires

  1. [TStatusBar] Comment ajouter des composants à un TStatusBar
    Par Higgins dans le forum Composants FMX
    Réponses: 18
    Dernier message: 10/06/2013, 15h33
  2. Réponses: 0
    Dernier message: 03/05/2012, 18h10
  3. comment ajouter des composants au delphi
    Par hayat2 dans le forum Débuter
    Réponses: 3
    Dernier message: 23/05/2010, 13h00
  4. Comment ajouter des composants par un click ?
    Par haraelendil dans le forum Composants
    Réponses: 11
    Dernier message: 18/08/2008, 18h49
  5. [C# express] Comment ajouter des composants à la palette d'outils?
    Par Jayceblaster dans le forum Visual Studio
    Réponses: 1
    Dernier message: 04/11/2006, 20h40

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