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 :

[GridBagLayout] Placer des composants sur une grille virtuelle


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre régulier
    Inscrit en
    Août 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 107
    Points : 74
    Points
    74
    Par défaut [GridBagLayout] Placer des composants sur une grille virtuelle
    Bonjour,

    Dans une Applet Java, j'ai 7 éléments graphiques que j'aimerais placer sur une grille mais qui ne respectent pas le placement que je leur spécifie.
    J'ai pourtant vérifié les coordonnées {x;y} et celles-ci semblent correctes.

    Voici 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
    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
    104
    105
    106
    107
    108
    109
    110
     
     
    GridBagLayout gridbag = new GridBagLayout();
    JPanel pane = new JPanel(gridbag);
     
    add(pane,BorderLayout.NORTH);
     
    JLabel LabListe1 =  new JLabel ("Liste1 : ");
    GridBagConstraints constraintsLabListe1 = new GridBagConstraints();
     
    constraintsLabListe1.gridx=0;
    constraintsLabListe1.gridy=0;
    constraintsLabListe1.gridheight=1;
    constraintsLabListe1.gridwidth=1;
    constraintsLabListe1.weightx=1;
    constraintsLabListe1.weighty=1; 
    constraintsLabListe1.fill = GridBagConstraints.HORIZONTAL;
    constraintsLabListe1.anchor = GridBagConstraints.CENTER;
    gridbag.setConstraints(LabListe1, constraintsLabListe1);
    pane.add(LabListe1);
     
    JList Liste1 = new JList(Liste1);
     
    GridBagConstraints constraintsListe1 = new GridBagConstraints();
    constraintsListe1.gridx=0;
    constraintsListe1.gridy=1;
    constraintsListe1.gridheight=1;
    constraintsListe1.gridwidth=1;
    constraintsListe1.weightx=0;
    constraintsListe1.weighty=0;     
    constraintsListe1.fill = GridBagConstraints.HORIZONTAL;
    constraintsListe1.anchor = GridBagConstraints.CENTER;
    gridbag.setConstraints(Liste1, constraintsListe1);
    pane.add(Liste1);
     
    JScrollPane DefilantListe1 = new JScrollPane(Liste1);
    pane.add(DefilantListe1);
     
     
    JLabel LabParam1 = new JLabel ("Param1 : ");
    GridBagConstraints constraintsLabParam1 = new GridBagConstraints();
    constraintsLabParam1.gridx=1;
    constraintsLabParam1.gridy=0;
    constraintsLabParam1.gridheight=1;
    constraintsLabParam1.gridwidth=1;
    constraintsLabParam1.weightx=1;
    constraintsLabParam1.weighty=1;     
    constraintsLabParam1.fill = GridBagConstraints.HORIZONTAL;
    constraintsLabParam1.anchor = GridBagConstraints.CENTER;
    gridbag.setConstraints(LabParam1, constraintsLabParam1);
    pane.add(LabParam1);
     
     
    JTextField TxtParam1 = new JTextField ();
    GridBagConstraints constraintsTxtParam1 = new GridBagConstraints();
     
    constraintsTxtParam1.gridx=1;
    constraintsTxtParam1.gridy=1;
    constraintsTxtParam1.gridheight=1;
    constraintsTxtParam1.gridwidth=1;
    constraintsTxtParam1.weightx=0;
    constraintsTxtParam1.weighty=0; 
    constraintsTxtParam1.fill = GridBagConstraints.HORIZONTAL;
    constraintsTxtParam1.anchor = GridBagConstraints.CENTER;
    gridbag.setConstraints(TxtParam1, constraintsTxtParam1);
    pane.add(TxtParam1);
     
    JLabel LabParam2 =  new JLabel ("Param2 : ");
    GridBagConstraints constraintsLabParam2 = new GridBagConstraints();
     
    constraintsLabParam2.gridx=2;
    constraintsLabParam2.gridy=0;
    constraintsLabParam2.gridheight=1;
    constraintsLabParam2.gridwidth=1;
    constraintsLabParam2.weightx=1;
    constraintsLabParam2.weighty=1; 
    constraintsLabParam2.fill = GridBagConstraints.HORIZONTAL;
    constraintsLabParam2.anchor = GridBagConstraints.CENTER;
    gridbag.setConstraints(LabParam2, constraintsLabParam2);
    pane.add(LabParam2);
     
    JTextField TxtParam2 = new JTextField ();
    GridBagConstraints constraintsTxtParam2 = new GridBagConstraints();
     
    constraintsTxtParam2.gridx=2;
    constraintsTxtParam2.gridy=1;
    constraintsTxtParam2.gridheight=1;
    constraintsTxtParam2.gridwidth=1;
    constraintsTxtParam2.weightx=0;
    constraintsTxtParam2.weighty=0; 
    constraintsTxtParam2.fill = GridBagConstraints.HORIZONTAL;
    constraintsTxtParam2.anchor = GridBagConstraints.CENTER;
    gridbag.setConstraints(TxtParam2, constraintsTxtParam2);
    pane.add(TxtParam2);   
     
     
    JButton Valid =  new JButton ("Valider" );
    Valid.addActionListener(this);
    GridBagConstraints constraintsValid = new GridBagConstraints();
     
    constraintsValid.gridx=3;
    constraintsValid.gridy=1;
    constraintsValid.gridheight=1;
    constraintsValid.gridwidth=1;
    constraintsValid.weightx=0;
    constraintsValid.weighty=0; 
    constraintsValid.fill = GridBagConstraints.HORIZONTAL;
    constraintsValid.anchor = GridBagConstraints.CENTER;
    gridbag.setConstraints(Valid, constraintsValid);
    pane.add(Valid);
    Le résultat que je souhaiterais obtenir visuellement est le suivant :


    LabListe1 | LabParam1 | LabParam2
    ---------------------------------------
    Liste1 | TxtParam1 | TxtParam2 | Valider


    Au lieu de cela, ma Liste1 se place au milieu.
    Auriez-vous une idée de l'endroit où pourrait se situer l'erreur?
    J'ai un pressentiment au niveau de weightx et weighty, mais je me trompe peut-être...

    En tout cas, merci d'avance pour votre aide.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 78
    Points : 58
    Points
    58
    Par défaut
    Je ne suis pas un expert mais en faisant les corrections suivantes, j'ai obtenu ce que tu voulais :
    - indiquer les contraintes lors de l'ajout de chaque composant au panel et pas en l'indiquant au layout.
    - Pour Liste1, ce composant est mis dans un JScrollPane. Donc c'est le JScrollPane qui doit être ajouté au panel (pane) et pas Liste1 => suppression de la ligne "pane.add(Liste1);"

    Avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    gridbag.setConstraints(LabListe1, constraintsLabListe1);
    pane.add(LabListe1);
     
    ...
     
    gridbag.setConstraints(Liste1, constraintsListe1);
    pane.add(Liste1);
    JScrollPane DefilantListe1 = new JScrollPane(Liste1);
    pane.add(DefilantListe1);
    Après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    pane.add(LabListe1, constraintsLabListe1);
     
    ...
     
    JScrollPane DefilantListe1 = new JScrollPane(Liste1);
    pane.add(DefilantListe1, constraintsListe1);
    nb : suppression des lignes qui ne sont pas dans le "Avant et pas dans le "Après"

  3. #3
    Membre régulier
    Inscrit en
    Août 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 107
    Points : 74
    Points
    74
    Par défaut
    Merci beaucoup pour tes remarques Ghorin, ça marche maintenant!

    Bonne journée!

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

Discussions similaires

  1. Placement des composant sur une page ASP
    Par Abac_Angelique dans le forum Visual Studio
    Réponses: 7
    Dernier message: 04/10/2007, 11h24
  2. comments placer des delimiteurs sur une courbe?
    Par brindacier dans le forum MATLAB
    Réponses: 4
    Dernier message: 26/03/2007, 20h19
  3. Réponses: 10
    Dernier message: 15/10/2006, 18h23
  4. Réponses: 8
    Dernier message: 07/08/2006, 18h40
  5. Afficher des images sur une grille
    Par Coussati dans le forum Composants VCL
    Réponses: 3
    Dernier message: 27/10/2005, 10h27

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