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 :

Comment garder la taille des boutons dans un GridLayout


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 90
    Points : 28
    Points
    28
    Par défaut Comment garder la taille des boutons dans un GridLayout
    Voila,

    je met dans un GridLayout un JTextField mais du coup il prend toute la place possible du conteneur alors que j'ai bien spécifié la taille que je voulais avec setPreferredSize.
    Comment y remédier?

    Ah et puis un autre problème aussi:

    J'utilise un GridLayout dans la partie EAST d'un BorderLayout mais je voudrais pas que le GridLayout prenne toute la place dans le EAST. Est ce que je suis obligé de refaire un BorderLayout dans le EAST? ou y a t-il une autre solution?

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Je ne sais pas si c'est une solution très "propre" mais pour ne pas me prendre la tête avec ces $#*%@ de layout pour chaque composant je fais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    JTextField monTextField = new JTextField();
    Dimension dim = new Dimension(50,50);
    monTextField.setMinimumSize(dim); 
    monTextField.setMaximumSize(dim); 
    monTextField.setPreferredSize(dim);
    monTextField.setSize(dim);
    Avec ca tu es sur que ton composant de sera pas redimenssionné déjà ^^.
    Après pense à utiliser des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Box.createHorizontalGlue();
    Box.createHorizontalStrut(width);
    Box.createVerticalGlue();
    Box.createVerticalStrut(height);

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Pour que ton composant ne prenne pas toute la place, tu peux, pour chaque cellule de ton GridLayout, ajouter un panel avec le layout que tu souhaites, dans lequel tu ajouteras ton composant.

    Pour ta deuxième question, oui, tu peux utiliser un nouveau BorderLayout dans la partie East de ton premier BorderLayout.

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Que veux-tu obtenir exactement ???

    Il serait surement plus simple d'utiliser un layout plus adapté à tes besoins plutôt que de trifouiller un GridLayout...

    a++

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 90
    Points : 28
    Points
    28
    Par défaut
    en fait je veux positionner des JPanel dans une JDialog mais pour ne pas m'embêter, j'en ai placer 2 avec BorderLayout(NORTH et SOUTH) et j'ai placé les Jpanel qui sont à l'intérieur du JPanel NORTH manuellement avec la fonction setBounds(int,int,int,int). Mais quand j'execute, les JPanel placés manuellement se mettent les uns derrière les autres sans tenir compte de la fonction setBounds(), pourquoi?

    Merci

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 78
    Points : 58
    Points
    58
    Par défaut
    Tu ne peux placer tes composants dans ton jpanel avec setBounds(...) que si ton panel a été défini avec un layout null :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    panelNORTH.setLayout(null);
    panelInterne.setBound(int, int, int, int);
    panelNorth.add(panelInterne);

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 90
    Points : 28
    Points
    28
    Par défaut
    en mettant setLayout à null, j'ai plus de panel interne qui s'affiche mais le setBounds appliqué au panel interne va donner sa position par rapport au panel dans lequel il est ou le panel encore supérieur?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 78
    Points : 58
    Points
    58
    Par défaut
    en mettant setLayout à null, j'ai plus de panel interne qui s'affiche mais le setBounds appliqué au panel interne va donner sa position par rapport au panel dans lequel il est ou le panel encore supérieur?
    => position par rapport au panel dans lequel il est

    Voici un exemple plus complet avec des commentaires :
    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
     
    // PANEL LE PLUS HAUT (contient un layout de type BorderLayout)
    JPanel panelBorder = new JPanel();
    panelBorder.setLayout(new BorderLayout());
     
    // PANEL MIS DANS LA PARTIE NORD DU PANEL LE PLUS HAUT
    // pas de layout redéfini, on garde celui par défaut
    JPanel panelNord   = new JPanel();
     
    // PANEL CONTENANT LE JTEXTFIELD ET MIS DANS LE PANEL NORD
    // layout = null => positionnement manuel avec setBounds(...)
    JPanel panelInterne = new JPanel();
    panelInterne.setLayout(null);
     
    // COMPOSANT JTEXTFIELD
    JTextField champ = new JTextField("test");
    champ.setBounds(10, 10, 50, 25); // position (10,10), largeur 50, hauteur 25
     
    // AJOUT DES COMPOSANTS ENTRE EUX (du plus bas au plus haut)
    panelInterne.add(champ);  // le champ dans son panel avec layout null
    panelNord.add(panelInterne);  // le panel "layout null" dans le panel nord
    panelBorder.add(panelNord, BorderLayout.NORTH); // le panel nord dans le panel avec border layout
    ps : ce code n'est pas optimisé et n'a pas été testé (je l'ai écrit de tête), si ça ne marche pas dis moi ce que tu obtiens en l'adaptant à ton code (et donne ton nouveau code)
    ps : les puristes diront que le layout null est un très mauvais choix et qu'il faut toujours préférer utiliser un layout manager pour gérer son positionnement. En cela ils ont raison même si moi-même je fais régulièrement des layout null car je ne m'en sors pas avec les layout managers pour obtenir exactement ce que je veux (mais sans doute par méconnaissance/inexpérience avec les layouts puissants)

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 90
    Points : 28
    Points
    28
    Par défaut
    Parfait tout marche merci beaucoup à vous tous.

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

Discussions similaires

  1. [Débutant] Comment modifier la taille des points dans une legende ?
    Par stodak dans le forum MATLAB
    Réponses: 4
    Dernier message: 28/03/2012, 17h36
  2. [Spark] Taille des boutons dans une barre de navigation
    Par yvancoyaud dans le forum Flex
    Réponses: 0
    Dernier message: 09/12/2011, 01h26
  3. Taille des colonnes dans un GridLayout
    Par floctc dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 17/05/2010, 11h49
  4. Réponses: 5
    Dernier message: 15/01/2010, 19h32
  5. Réponses: 3
    Dernier message: 04/04/2007, 14h18

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