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 :

positionnement des composants dans une fenetre


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 106
    Points
    106
    Par défaut positionnement des composants dans une fenetre
    Bonjour,

    J'aimerais faire une application graphique en Swing, qui a le design suivant.

    Une fenetre composé de :
    - un label, suivi d'une zone de texte
    - puis en dessous, un autre label suivi d'une zone de texte.

    En utilisant un FlowLayout, il place par défaut les composants de gauche à droite, jusqu'à la largeur max de la fenêtre et ensuite il descend d'une ligne.

    Y'a t'il un moyen simple pour pouvoir le "forcer" d'aller à la ligne à un moment?

    Je vous remercie :-)

  2. #2
    Membre expérimenté

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Points : 1 672
    Points
    1 672
    Par défaut
    Non, pas possible avec le FlowLayout. Par contre, tu peux essayer GridLayout ou GridBagLayout.

  3. #3
    Membre du Club Avatar de blackhock
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 75
    Points : 41
    Points
    41
    Par défaut
    Salut thierry_b,
    En effet t'as deux solution possible (voir plus...)
    1\ mettre le Layout à null : et tu places tes Label et Jtext avec la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .setBounds(int, int, int, int)
    2\ Utiliser un autre Layout, un peu complexe mais très utile et puissant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    TonPanel.setLayout(new GridBagLayout());
    GridBagConstraints GBC = new GridBagConstraints();
    GBC.insets = new Insets(int, int, int, int);
    TonPanel.add(tonLabel, GBC);
    et voila t'as le choix

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 106
    Points
    106
    Par défaut Re
    Re,

    J'ai essayé ce bout de code là:

    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
       private JPanel buildContentPane(){
            JPanel panel = new JPanel();
     
            labelWhen = new JLabel("WHEN:");
            areaWhen = new JTextArea();
            labelThen = new JLabel("THEN:");
            areaThen = new JTextArea();
     
            GridBagLayout gb = new GridBagLayout();
            GridBagConstraints gbc = new GridBagConstraints();
     
            panel.setLayout(gb);
            panel.add(labelWhen);
            gb.setConstraints(labelWhen, gbc);
     
            JScrollPane scrollPane1 = new JScrollPane(areaWhen);
            scrollPane1.setPreferredSize(new Dimension(200,100));  
            panel.add(scrollPane1);
            gb.setConstraints(scrollPane1, gbc);
     
            gbc.gridx = GridBagConstraints.REMAINDER;
     
            panel.add(labelThen);
            gb.setConstraints(labelThen, gbc);
     
            gbc.gridx = GridBagConstraints.RELATIVE;
     
            JScrollPane scrollPane2 = new JScrollPane(areaThen);
            scrollPane2.setPreferredSize(new Dimension(200,100));  
            panel.add(scrollPane2);
            gb.setConstraints(scrollPane2, gbc);
     
            return panel;
        }
    mais à l'affichage, j'ai :
    - sur une ligne : "When:" suivi de deux zones de texte
    - sur une autre ligne : "Then"

    alors que j'aimerais avoir:
    - sur une ligne : "When:" suivi d'une zone de texte
    - sur une autre ligne : "Then" suivi d'une zone de texte

    Merci :-)

  5. #5
    Membre du Club Avatar de blackhock
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 75
    Points : 41
    Points
    41
    Par défaut
    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
     
    		JPanel panel2 = new JPanel();
    		JLabel labelWhen = new JLabel("WHEN:");
            JTextArea areaWhen = new JTextArea();
            JLabel labelThen = new JLabel("THEN:");
            JTextArea areaThen = new JTextArea();
            panel2.setLayout(new GridBagLayout());
     
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.insets = new Insets(0, -350, 0, -260);
            panel2.add(labelWhen, gbc);
     
            JScrollPane scrollPane1 = new JScrollPane(areaWhen);
            scrollPane1.setPreferredSize(new Dimension(200,100));  
            gbc.insets = new Insets(0, 0, 0, 0);
            panel2.add(scrollPane1, gbc);
     
            gbc.gridx = GridBagConstraints.REMAINDER;
            gbc.insets = new Insets(100, 0, 100, 100);
            panel2.add(labelThen, gbc);
    pareil pour scrollPane2

  6. #6
    Membre du Club Avatar de blackhock
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 75
    Points : 41
    Points
    41
    Par défaut
    Resalut après avoir mangé je vois plus clair,

    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
     
    		JPanel panel2 = new JPanel();
            panel2.setLayout(new GridBagLayout());
     
    		JLabel labelWhen = new JLabel("WHEN:");
            JLabel labelThen = new JLabel("THEN:");
     
            JScrollPane scrollPane1 = new JScrollPane(new JTextArea());
            scrollPane1.setPreferredSize(new Dimension(200,100));
            JScrollPane scrollPane2 = new JScrollPane(new JTextArea());
            scrollPane2.setPreferredSize(new Dimension(200,100));  
     
            GridBagConstraints gbc = new GridBagConstraints();
     
            gbc.insets = new Insets(-100, -350, 0, -260);
            panel2.add(labelWhen, gbc);  
            gbc.insets = new Insets(-100, 0, 0, 0);
            panel2.add(scrollPane1, gbc);    
           // gbc.gridx = GridBagConstraints.REMAINDER;
            gbc.insets = new Insets(250, -750, 0, -260);
            panel2.add(labelThen, gbc);   
           // gbc.gridx = GridBagConstraints.RELATIVE;
            gbc.insets = new Insets(300, -200, 0, 0);
           panel2.add(scrollPane2, gbc);
    Bon courage

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 106
    Points
    106
    Par défaut Re
    Re,

    Ca ne marche aps bien, et j'ai un peu de mal avec les Insets.
    Je viens de tester une solution plus simple à comprendre avec gridx et gridy, mais j'ai toujours un soucis:

    J'ai sur 3 lignes:
    - un Jlabel suivi d'un TextField
    - un Jlabel suivi d'un TextField
    - un Jlabel suivi d'un JScrollPane

    Mais par contre, je n'arrive à régler l'espace vertical entre mes TextField et entre mon second TextField et JScrollPane (ils sont tous collés entre eux verticalement).

    J'ai essayé avec ipady, mais ca ne me donne rien :-(.

    VOilà mon code:

    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
     private JPanel buildContentPane(){
            JPanel panel = new JPanel();
            panel.setLayout(new GridBagLayout());
     
            nameRuleLabel = new JLabel("Nom de la règle:");
            nameGroupRuleLabel = new JLabel("Nom du groupe de la règle:");
            whenRuleLabel = new JLabel("Conditions:");
            thenRuleLabel = new JLabel("Conséquences:");
     
            nameRuleValue = new JTextField();
            nameRuleValue.setColumns(10);
     
            whenRuleValue = new JTextArea();
            thenRuleValue = new JTextArea();
     
            Object[] elements = new Object[]{"BCS", "RAP", "CV"};
            nameGroupRuleValue = new JComboBox(elements);
     
            JScrollPane scrollPane1 = new JScrollPane(new JTextArea());
            scrollPane1.setPreferredSize(new Dimension(200,100));
     
            JScrollPane scrollPane2 = new JScrollPane(new JTextArea());
            scrollPane2.setPreferredSize(new Dimension(200,100));  
     
            GridBagConstraints gbc = new GridBagConstraints();
     
            gbc.gridx=0;
            gbc.gridy=0;
            //gbc.ipady = 10;
            panel.add(nameRuleLabel, gbc);  
     
            gbc.gridx=1;
            gbc.gridy=0;
            panel.add(nameRuleValue, gbc);
     
            gbc.gridx=0;
            gbc.gridy=1;
            panel.add(nameGroupRuleLabel, gbc);
     
            gbc.gridx=1;
            gbc.gridy=1;
            gbc.ipadx = 30;
            panel.add(nameGroupRuleValue, gbc);
     
            gbc.gridx=0;
            gbc.gridy=2;
            panel.add(whenRuleLabel, gbc);
     
            gbc.gridx=1;
            gbc.gridy=2;
            panel.add(scrollPane1, gbc);
     
            return panel;
        }
    Une idée?

    Merci :-)

  8. #8
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 106
    Points
    106
    Par défaut Re
    Re,

    J'ai résolu mon soucis avec un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gbc.insets = new Insets(10, 10, 10, 10);
    Merci :-)

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

Discussions similaires

  1. gerer la position des composants dans une fenetre
    Par AbouraStat dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 13/05/2009, 11h37
  2. Répartition des composants dans une fenetre
    Par Oussama_Gabes dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 11/04/2008, 14h40
  3. Positionner des éléments dans une cellule de tableau
    Par Rémy29 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 31/07/2006, 17h33
  4. utilisation des panel dans une fenetre Win32
    Par ksoft dans le forum MFC
    Réponses: 1
    Dernier message: 02/05/2006, 21h45
  5. Positionner des cellules dans une page
    Par BBe8127 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/10/2005, 10h25

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