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 :

Layout pour metre 2 panels en 2/3 1/3


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 25
    Points : 19
    Points
    19
    Par défaut Layout pour metre 2 panels en 2/3 1/3
    salut tout le monde

    j'essaie de faire une interface qui proposerait un graph sur 2/3 de la surface de la fenêtre et une table sur le 1/3 restant

    l'idée est que quelque soit la taille de la fenêtre ces proportions soient conservées

    j'ai essayé d'utiliser un GridBagLayout mais je n'arrive à rien

    en fait le top serait même que je spécifie la taille de la table à droite et que le graph s'adapte à la place restante

    vous pourriez me donner un coup de pouce ?

    merci

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Bah il faut placer tes deux JPanel en BOTH au niveau du fill et avec des weightx respectivement de 0.33 et 0.66.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    c'est ce que j'ai fait mais ça ne fonctionne pas !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    c.fill = GridBagConstraints.BOTH;
    c.gridx = 0;
    c.gridy = 0;
    c.weightx = 0.8;
    c.weighty = 1;
    panel.add(getPanel1(),c);
     
    c.fill = GridBagConstraints.BOTH;
    c.gridx = 1;
    c.gridy = 0;
    c.weightx = 0.2;
    c.weighty = 1;
    panel.add(getPanel2(),c);

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Bah ici avec deux panels tous simples ça marche sans problème:

    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
     
        // TODO Auto-generated method stub
            JFrame panel = new JFrame();
            panel.setSize(800, 600);
            panel.setLayout(new GridBagLayout());
            JPanel jp1 = new JPanel();
            jp1.setBackground(Color.blue);
            JPanel jp2 = new JPanel();
            jp2.setBackground(Color.red);
            GridBagConstraints c = new GridBagConstraints(); 
            c.fill = GridBagConstraints.BOTH;
            c.gridx = 0;
            c.gridy = 0;
            c.weightx = 0.8;
            c.weighty = 1;
            panel.add(jp1,c);
            c = new GridBagConstraints(); 
            c.fill = GridBagConstraints.BOTH;
            c.gridx = 1;
            c.gridy = 0;
            c.weightx = 0.2;
            c.weighty = 1;
            panel.add(jp2,c);
            panel.setLocationRelativeTo(null);
            panel.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            panel.setVisible(true);
    Bon ensuite il y a peut être les preferredSize/minimumSize de tes composants qui pose problème

    Sinon tu fais en sorte que ta partie droite soit en fill BOTH mais avec un weightx à 0 (ta table ne chagera pas de taille) et que ta partie gauche soit en fill 1.0
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    pourtant je n'ai pas spécifié de taille dans mon code

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par sarsipius Voir le message
    pourtant je n'ai pas spécifié de taille dans mon code
    Mais je composant calcule pour lui même une taille minimale.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    ok...

    bon ça va pas être simple cette histoire

    est-ce qu'il est possible de débrider cette taille par défaut ?
    c'est plutôt pénible qu'autre chose !

  8. #8
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    bah avec la méthode setPreferredSize.
    Mais donner une taille fixe à un composant est en soit pas forcément la meilleure des idées car suivant la résolution de l'utilisateur ça peut être totalement handicapant (trop petit ou trop grand).

    Je te conseille plutôt de rester sur le répartissement de poids avec du 1.0 pour le graphe et du 0 pour la table. Comme ça la table ne changera pas de taille mais sera adapté à la taille de l'écran.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  9. #9
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    C'est plus simple de travailler avec des layout tiers comme MigLayout, TableLayout ou FormLayout pour réaliser simplement ce genre de contraintes.
    Le GridBagLayout donne vite la migraine
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/01/2007, 10h42
  2. Réponses: 9
    Dernier message: 04/01/2007, 18h56
  3. [C# 2.0] Meilleur méthode pour dérivé un Panel
    Par murlock dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/06/2006, 11h33
  4. Layout pour ajoute dynamique
    Par Invité dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 04/05/2006, 12h38
  5. Probleme pour modifier le panel courant de ma Jframe
    Par Sylmandel dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 26/04/2006, 18h06

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