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

Composants Java Discussion :

Une histoire de layouts


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 56
    Par défaut Une histoire de layouts
    Bonjour à tous!
    C'est une question de noob mais je débute en interface graphique donc je découvre les layouts et c'est pas facile de se dépatouiller lol.
    Voila ma fenêtre :
    http://www.hostingpics.net/viewer.ph...hilaCollec.jpg

    Les 3 cadres montrent 3 JPanel empilés dans un BoxLayout. Le cadre jaune est donc un Jpanel de cette forme. Mon problème :
    je voudrais mettre le bouton "Ajouter" au centre de la fenêtre et qu'il reste centré lors d'un redimensionnement de fenêtre, et le bouton "Remettre à zéro" à droite et qu'il reste collé à droite lors du redimensionnement.
    Petite précision : il faudra garder une marge horizontale entre le bouton "Remettre à zéro" et la marge de droite (pour la marge verticale, je ne l'ai pas encore fait mais je rajouterai un 4e Panel dans le BoxLayout avec un Box.createVerticalStrut (20) )

    J'ai tenté avec le GricBagLayout qui a l'air très flexible par rapport aux autres mais je m'en sors pas, ça fait pas du tout ce que je veux lol. Voici le code qui donne le print screen ci-dessus :

    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
     
    private JPanel LigneBtn;
     
    LigneBtn = new JPanel ();
     
    LigneBtn.setLayout (new GridBagLayout());
     
    GridBagConstraints gbc = new GridBagConstraints();
     
    gbc.gridheight = gbc.gridwidth = 1;
    gbc.gridx = gbc.gridy = 0;
    gbc.anchor = GridBagConstraints.LINE_END;
    LigneBtn.add(AjouterBtn, gbc);
     
    gbc.gridx = 1;
    gbc.gridwidth = GridBagConstraints.REMAINDER;
    gbc.anchor = GridBagConstraints.BASELINE_TRAILING;
    gbc.fill = GridBagConstraints.NONE;
    gbc.weightx = 1.;
    LigneBtn.add (ZeroBtn, gbc);
    Merci de m'éclairer ou de me proposer des solutions, le mieux ça serait avec GridBagLayout pour que j'apprenne, sinon avec d'autres.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 56
    Par défaut Une partie de la solution
    Voici ce à quoi je suis arrivé, ça marche... :
    http://www.hostingpics.net/viewer.ph...ollecMieux.jpg

    .... mais le code est moche :
    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
     
    GridBagConstraints gbc = new GridBagConstraints();
     
    gbc.gridx = 2;
    gbc.gridy = 0;
    gbc.gridwidth = 4;
    gbc.gridheight = 1;
    gbc.anchor = GridBagConstraints.BASELINE;
    gbc.weightx = 1.;
    gbc.insets = new Insets(0, 0, 20, 0);
    LigneBtn.add(AjouterBtn, gbc);
     
    gbc.gridx = 5;
    gbc.gridheight = gbc.gridwidth = 1;
    gbc.anchor = GridBagConstraints.BASELINE_TRAILING;
    gbc.insets = new Insets(0, 0, 20, 20);
    LigneBtn.add (ZeroBtn, gbc);
    Car comme on le voit j'ai utilisé un bug, ou une grosse feinte toute pourrie, qui consiste à découper la ligne non pas en 2 parties mais en 5 dont le bouton "Ajouter" prend les 4 premières (en tout cas c'est comme ça que je le vois, mais ça ne marche plus si je mets gridx à 0 ou 1).
    Quand je mettais gridx=0 de "Ajouter" et gridx=1 ça pseudo-fonctionnait, c'est à dire que "Remettre à Zéro" était bien à droite, mais "Ajouter" se trouvait au milieu de l'espace coupé en 2, donc pas au centre de la fenêtre :
    http://www.hostingpics.net/viewer.ph...llecMilieu.jpg

    ........................
    Bon bah en parlant tout seul j'ai trouvé la solution, le bouton est bien au milieu de la fenêtre et cette fois je crois que le code est propre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.gridx = gbc.gridy = 0;
    gbc.gridwidth = gbc.gridheight = 1;
    gbc.anchor = GridBagConstraints.BASELINE_TRAILING;
    gbc.weightx = 1.;
    LigneBtn.add(AjouterBtn, gbc);
     
    gbc.gridx = 1;
    gbc.insets = new Insets(0, 0, 20, 20);
    LigneBtn.add (ZeroBtn, gbc);
    Tout simplement ^^
    Cependant si vous avez des suggestions, une autre manière de faire, ou des trucs que j'ai peut être pas pité, n'hésitez pas à commenter, tout renseignement est bon à prendre car je ne me sens quand même pas super à l'aise avec le GridBagLayout et je pense pas arriver à faire toute une interface avec encore.

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

Discussions similaires

  1. CI, une histoire de Layout
    Par selmac594 dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 22/02/2013, 16h13
  2. Une histoire de compte à rebours (avec formulaire)
    Par Olivier14 dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 04/03/2009, 13h43
  3. sauter une ligne avec Layout...
    Par youp_db dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 16/12/2005, 19h54
  4. Une histoire de lien...
    Par sloshy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 25/08/2005, 23h13
  5. [JAR][debutant] encore une histoire de classpath
    Par blaz dans le forum Général Java
    Réponses: 6
    Dernier message: 27/07/2005, 12h28

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