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 :

Layout horizontal et vertical alignement


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 131
    Par défaut Layout horizontal et vertical alignement
    Salut à tous,

    je voudrai créer un panel à l'intérieur duquel j'aurai 2 labels l'un à côté de l'autre.

    Je voudrai que ces 2 labels soient toujours aligner au centre verticalement mais je voudrai avoir un contrôle sur l'alignement horizontal des 2 labels : Gauche, Centre et Droite.

    J'ai d'abord essayé avec un FlowLayout :

    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
     
                    JPanel panel = new JPanel();
    		FlowLayout flowLayout = new FlowLayout();
     
    		if (serial.getAlignement() == Vertex.LEFT){
    			flowLayout.setAlignment(FlowLayout.LEFT);
    		}
    		else if (serial.getAlignement() == Vertex.CENTER){
    			flowLayout.setAlignment(FlowLayout.CENTER);
    		}
    		else if (serial.getAlignement() == Vertex.RIGHT){
    			flowLayout.setAlignment(FlowLayout.RIGHT);
    		}
     
    		flowLayout.setVgap(2);
    		panel.setLayout(flowLayout);
     
    		JLabel serialNumberPrefixe = new JLabel();
    		serialNumberPrefixe.setText("toto");
     
    		JLabel serialNumberValue = new JLabel();
    		serialNumberValue.setText("tata");
     
                    panel.add(serialNumberPrefixe);
    		panel.add(serialNumberValue);
     
    		panel.setVisible(true);
    Ceci me permettait d'avoir un contrôle sur l'alignement horizontal de mes 2 labels mais malheureusement je ne pouvais pas spécifier ma volonté de les laisser centrer au niveau de l'alignement vertical.

    J'ai donc voulu essayer avec le GridBagLayout :

    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
     
                           GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
     
    			gridBagConstraints2.gridy = 0;
    			gridBagConstraints2.gridx = 1;
     
    			GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
     
    			gridBagConstraints1.gridy = 0;
    			gridBagConstraints1.gridx = 0;
     
     
    			jLabel1 = new JLabel();
    			jLabel1.setText("toto");
    			jLabel1.setName("jLabel1");
    			jLabel = new JLabel();
    			jLabel.setText("tata");
    			jLabel.setName("jLabel");
    			jPanel = new JPanel();
    			jPanel.setLocation(new Point(31, 22));
    			jPanel.setSize(new Dimension(209, 64));
    			jPanel.setLayout(new GridBagLayout());
    			jPanel.setComponentOrientation(ComponentOrientation.UNKNOWN);
     
    			jPanel.add(jLabel, gridBagConstraints1);
    			jPanel.add(jLabel1, gridBagConstraints2);
    Ceci me permet de conserver mes 2 labels centrés verticalement même en cas de redimensionnement du panel malheureusement je n'ai aucun contrôle sur le positionnement horizontal de mes 2 labels (du moins je ne vois pas comment faire).

    Quelqu'un peu-t-il m'aider ?

    Si vous avez une autre solution n'hésitez pas.

    Merci.

  2. #2
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    Pour le grid bag layout tu dois utiliser la propriété anchor , voici un tuto ici :
    GridBagLayout

    Cette propriété définit la position du composant dans une cellule (haut, haut gauche, etc...)

    je pense que c est ce que tu cherche

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 131
    Par défaut
    Oui j'ai testé avec ça mais sans succès, je ne l'ai peut être pas utilisé correctement, je vais jeter un nouveau coup d'oeil.

    Merci pour ta réponse en tout cas.

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 131
    Par défaut
    J'ai beau changé le anchor pour le mettre sur East pour le premier label, les deux restent centrés horizontalement :

    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
     
    GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
     
    			gridBagConstraints2.gridy = 0;
    			gridBagConstraints2.gridx = 1;
     
    			GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
     
    			gridBagConstraints1.gridy = 0;
    			gridBagConstraints1.anchor = GridBagConstraints.EAST;
    			gridBagConstraints1.gridx = 0;
     
     
    			jLabel1 = new JLabel();
    			jLabel1.setText("toto");
    			jLabel1.setName("jLabel1");
    			jLabel = new JLabel();
    			jLabel.setText("tata");
    			jLabel.setName("jLabel");
    			jPanel = new JPanel();
    			jPanel.setLocation(new Point(31, 22));
    			jPanel.setSize(new Dimension(209, 64));
    			jPanel.setLayout(new GridBagLayout());
     
     
    			jPanel.add(jLabel, gridBagConstraints1);
    			jPanel.add(jLabel1, gridBagConstraints2);

  5. #5
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    très important aussi les ptés weightx et weighty, elles définissent la façon dont l'espace en trop sur une ligne/colonne sera réparti entre les cellules.

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 131
    Par défaut
    Oui mais dans mon cas je pense pas avoir besoin de gérer l'espace entre mes composants, j'aurai pu en avoir besoin si j'avais voulu créer un écart entre les 2 labels, mais c'est pas le cas, je veux qu'ils restent collés l'un à l'autre.

  7. #7
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    peut on avoir une copie écran de ce que tu obtiens ?

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

Discussions similaires

  1. Colonne horizontal vers vertical
    Par rvzip64 dans le forum Requêtes
    Réponses: 10
    Dernier message: 21/08/2006, 08h45
  2. [DIV] vertical align
    Par crakocrako dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 06/07/2006, 14h47
  3. CSS: vertical-align:middle;
    Par pierrot10 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 01/12/2005, 00h40
  4. [FO] vertical-align ?
    Par DanDigiMan dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 12/09/2004, 14h48

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