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

AWT/Swing Java Discussion :

Panel central fixe et Panels Latéraux étirables


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Par défaut Panel central fixe et Panels Latéraux étirables
    Bonjour,

    Je cherche à faire une frame contenant un panel central de largeur fixe et de hauteur étirable, et à droite et à gauche de celui-ci, 2 panels étirables en hauteur et largeur.

    Voilà je joue avec les layouts mais pour le moment sans succès, alors si l'un d'entre vous a la moindre petite idée qui pourrait me guider....

    Merci beaucoup

  2. #2
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    Ca vaut ce que ça vaut, mais tu peux toujours voir du côté du SpringLayout et de ses contraintes : on peut dire si un composant doit être étiré verticalement, horizontalement ou dans les 2 sens.
    Par contre, c'est pas évident à utiliser !
    Voir http://java.sun.com/docs/books/tutor...ut/spring.html

  3. #3
    Membre confirmé Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Par défaut
    Merci de m'avoir guider dans la direction du "Tirage de cheveux"

    C'est effectivement pas évident à utiliser et je ne suis pas certaine au final de pourvoir faire ce que je veux, mais avant de me prononcer, je vais essayer encore un peu.

  4. #4
    Membre émérite
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Par défaut
    GridBagLayout. (y)

    si tu me met une image de ce que tu veut, je te le fais :-))

    sinon, si tu veut le faire toi meme:

    tu met une preferedSize (et une minimumSize) a ton panel central.

    les deux panel sur le cote on un weightx de 0.5 un weighty de 1. et un fill sur BOTH.

    SpringLayout ce serait beaucoup plus complique :-)

  5. #5
    Membre confirmé Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Par défaut
    bbclone, merci pour ton aide

    Voilà, je souhaite que mes 3 colonnes soient étirables en hauteur.
    Par contre en largeur, je souhaite que la colonne centrale ai une taille fixe, et que les 2 autres prennent la place restante à droite et à gauche...
    une petite image en piece jointe.

    Je confirme SpringLayout c'est compliqué!
    Images attachées Images attachées  

  6. #6
    Membre émérite
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Par défaut
    voila voila un truc rapide :-)
    y'a plus de commentaire que de code. si tu supprime ce qui sert a rien, tu as peut-etre 10 lignes :-)

    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.EventQueue;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
     
    import javax.swing.BorderFactory;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    /**
     * Created by IntelliJ IDEA.
     * User: bebe
     * Date: 18-Oct-2006
     * Time: 17:47:07
     * To change this template use File | Settings | File Templates.
     */
    public class MyFrame extends JFrame {
     
        public MyFrame() {
            initGui();
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setSize(400, 300);
            setLocationRelativeTo(null);
        }
     
        private void initGui() {
            setLayout(new GridBagLayout());
     
            JPanel westPanel = new JPanel();
            westPanel.setBorder(BorderFactory.createLineBorder(Color.black, 1));
            JPanel centerPanel = new JPanel();
            centerPanel.setBorder(BorderFactory.createLineBorder(Color.black, 1));
            JPanel eastPanel = new JPanel();
            eastPanel.setBorder(BorderFactory.createLineBorder(Color.black, 1));
     
            centerPanel.setPreferredSize(new Dimension(200, 12));
            centerPanel.setMinimumSize(new Dimension(200, 12));
     
            centerPanel.setLayout(new GridBagLayout());
     
            /* Rien a voir avec le probleme de depart, je veux juste ajouter sur le panel,
               deux label pour afficher la taille que j'ai mi. */
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridx = 0;
            // gbc.gridy = GridBagConstraints.RELATIVE
            centerPanel.add(new JLabel("Minimum Width = 200"), gbc); // quand gridy est sur relative, la premiere fois gridy = 0
            centerPanel.add(new JLabel("Prefered Width = 200"), gbc); // la deuxieme fois, gridy = 1
     
            /* -- fini le truc rien a voir -- */
     
            /* ici sont les constrainte interessante. */
            gbc = new GridBagConstraints(); // je réinitialise ma contrainte aux valeurs par default.
     
            /* 1- je met gbc.gridx = RELATIVE
               c'est le defaut sur relative mais je le fais pour faire le detail complet.
               ca veut dire qu'il incremente gridx chaque fois que tu fais un add en utilisant cette constrainte.
            */
            gbc.gridx = GridBagConstraints.RELATIVE;
            /* 2- je met gbc.gridy sur REMAINDER; j'ai qu'une seule ligne; c'est donc la derniere. */
            gbc.gridy = GridBagConstraints.REMAINDER;
     
            /* 3-
                le premier panel etre extensible des deux cotes horizontal et vertical. => fill sur BOTH
                verticalement il peut prendre tout l'espace qui est en trop . => weighty de 1.
                horizontalement il peut prendre 50% de l'espace qui est en trop. => weightx de 0.5
             */
            gbc.weighty = 1.0;
            gbc.weightx = 0.5;
            gbc.fill = GridBagConstraints.BOTH;
            add(westPanel, gbc);
     
            /* 4- le panel du centre peut lui grandir que verticalment. => fill sur Vertical.
                  verticalement il peut prendre tout l'espace qui est en trop. => weighty peut rester sur 1.0
                  mais horizontalement, il peut pas bouger. => weightx doit revenir sur 0.0;
            */
            gbc.weightx = 0.0;
            gbc.fill = GridBagConstraints.VERTICAL;
            /* tu peux aussi rajouter des Insets */
    //        gbc.insets.left = gbc.insets.right = 50;
            add(centerPanel, gbc);
     
            /* si on met des insets faut les supprimer */
    //        gbc.insets.left = gbc.insets.right = 0;
     
     
            /* 5- pareil que le premier panel. on aurait pu ajouter ce panel avant le panel du centre et tu aurais gagner
            deux lignes. mais en detail c'est mieux pour comprendre.*/
            gbc.weightx = 0.5;
            gbc.fill = GridBagConstraints.BOTH;
            add(eastPanel, gbc);
        }
     
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new MyFrame().setVisible(true);
                }
            });
        }
    }
    j'ai mis les insets en commentaire, mais tu peux aussi les remettre. ca change rien ;-)

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

Discussions similaires

  1. [UI Mobile] Panel non fixe
    Par Guizmo95 dans le forum jQuery
    Réponses: 5
    Dernier message: 14/02/2013, 21h57
  2. Interface avec panel droit fixe
    Par Invité dans le forum Débuter
    Réponses: 2
    Dernier message: 22/05/2012, 15h08
  3. Récupérer les effets fixes PROC PANEL
    Par Pinechip dans le forum SAS STAT
    Réponses: 0
    Dernier message: 06/05/2010, 11h22
  4. Division centrale fixe, division de droite et gauche adaptables
    Par Blustuff dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 13/10/2008, 12h16
  5. Remplacer un panel par un autre panel
    Par Ggamer dans le forum wxPython
    Réponses: 2
    Dernier message: 04/04/2008, 13h52

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