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 :

Problème avec BoxLayout


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Points : 50
    Points
    50
    Par défaut Problème avec BoxLayout
    Bonjour,

    Je voudrais afficher dans un panel deux champs texte l'un au dessus de l'autre.
    J'ai pensé à utilisé BoxLayout de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
    Quand j'ajoute mes deux champs texte au panel, je constate en lançant l'application que chacun opccupe la moitié du panel. J'ai essayé de fixer la taille des champs texte avec setPreferredSize mais c'est toujours le même problème.

    Des idées là dessus?

    Merci

  2. #2
    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 le comportement normal du BoxLayout, il réparti la taille des composants ajoutés.
    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

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Points : 50
    Points
    50
    Par défaut
    Merci pour l'info mais que serait le meilleur moyen à ton avis pour afficher deux champs texte l'un au dessus de l'autre dans un panel?

  4. #4
    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
    Moi j'utilise le FormLayout pour ce qui est formulaires, tu es sûr que la taille de tes composants est correcte et que le reste sera de l'espace vide (et pas un redimensionnement vertical de la hauteur des composants).
    Le MigLayout est du même genre.

    Plus d'infos ici : http://www.developpez.net/forums/sho...d.php?t=528316
    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

  5. #5
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    Une solution serait de mettre ces composant à l'interieur d'un autre panel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    JPanel verticalPanel= new JPanel();
    verticalPanel.setLayout(new BoxLayout(verticalPanel, BoxLayout.Y_AXIS));
    verticalPanel.add(monComposant1);
    verticalPanel.add(monComposant2);
     
    setLayout(new FlowLayout());
    add(verticalPanel);
    édité pour corriger une erreur.

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Points : 50
    Points
    50
    Par défaut
    Merci bien pour vos réponses.

    J'ai commencé à utiliser le FormLayout mais c'est un peu trop complexe. S'il n'y a pas un autre moyen plus simple, y a t-il un exemple qui pourrait m'aider à utiliser ce layout?

    Pour la solution de Uther, je l'ai pas encore testé mais je ne vois pas la diférence par rapport à ce que j'ai fait et qui pause problème.

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Points : 50
    Points
    50
    Par défaut
    voilà aprés avoir essayé la solution de Uther, j'ai eu cette exceptio:
    java.lang.RuntimeException: BoxLayout can't be shared
    en fait j'ai un panel principal que j'ai mis en FlowLayout. J'ai ajouté un 2ème panel (verticalpanel) comme indiqué.
    Chaque champ texte est mis dans un panel en borderLayout.
    Enfin j'ajoute ces panels dans le verticalpanel que j'ajoute au panel principal.

  8. #8
    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
    Citation Envoyé par d_hazem Voir le message
    J'ai commencé à utiliser le FormLayout mais c'est un peu trop complexe. S'il n'y a pas un autre moyen plus simple, y a t-il un exemple qui pourrait m'aider à utiliser ce layout?
    Il y a tous les exemples qu'il faut sur le site officiel avec du code et une démo exécutable.
    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

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Points : 50
    Points
    50
    Par défaut
    voilà le code que j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public AllocationPanel(){
     
    		//setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
    		setLayout(new FlowLayout());
    		JPanel verticalPanel = new JPanel();
    		verticalPanel.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
    		JTextField textField1 = new JTextField();
    		JTextField textField2 = new JTextField();
    		verticalPanel.add(textField1);
    		verticalPanel.add(textField2);
    		add(verticalPanel);
    }
    Et c'est toujours la même exception

  10. #10
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    verticalPanel.setLayout(new BoxLayout(verticalPanel, BoxLayout.Y_AXIS));
    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

  11. #11
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    Pour la solution de Uther, je l'ai pas encore testé mais je ne vois pas la diférence par rapport à ce que j'ai fait et qui pause problème.
    La différence c'est que tu va avoir une organisation comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    |-----------Paneau principal(FlowLayout)-------------|
    ||------------verticalPanel(BoxLayout)--------------||
    ||                      Composant1                  ||
    ||--------------------------------------------------||
    ||                      Composant2                  ||
    ||--------------------------------------------------||
    |                                                    |
    |                                                    |
    ...
    |                                                    |
    |                                                    |
    |----------------------------------------------------|
    Les composant occupent toujours tout l'espace du BoxLayout, mais le vertical panel n'occupe pas tout l'espace du panneau principal.

    voilà aprés avoir essayé la solution de Uther, j'ai eu cette exception:
    En effet le BoxLayout doit toujours être construit avec pour paramètre le composant sur lequel on l'utilise.
    Dans ma solution j'ai oublié de remplacer le this par verticalPanel. j'ai édité pour corriger

  12. #12
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Points : 50
    Points
    50
    Par défaut
    OK It works fine.

    Thank you

  13. #13
    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
    Pour info : une utilisation du FormLayout par une autre membre : http://www.developpez.net/forums/sho....php?p=3462366
    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

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut solution pour éviter la répartition de l'espace avec BoxLayout
    Je pense qu'au lieu d'utiliser setPreferredSize il fallait utiliser setMaximumSize.

    Même soucis. Dans un JPanel l'ajout d'autre Jpanel contenant seulement une barre de progression ne s'empilaient pas mais se repartissaient tous l'espace.

    Ma solution : définir une taille maximum des composant à 'empiler' via setMaximumSize du composant que vous ajouter.

    voir à la source ici --> http://docs.oracle.com/javase/tutori.../box.html#size

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

Discussions similaires

  1. Problème avec un BoxLayout de bouton
    Par abossica dans le forum Débuter
    Réponses: 4
    Dernier message: 04/11/2008, 11h25
  2. problème d'alignement avec BoxLayout
    Par mobi38 dans le forum Agents de placement/Fenêtres
    Réponses: 8
    Dernier message: 14/04/2008, 17h55
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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