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 :

Redimensionner les composants extérieurs, mais pas le centre !


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    novembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2008
    Messages : 17
    Points : 22
    Points
    22
    Par défaut Redimensionner les composants extérieurs, mais pas le centre !
    Bonjour,
    J’ai un problème qui me paraissait simple au départ et que finalement je n ‘arrive pas à résoudre …
    Voilà une fenêtre toute simple (j’ai volontairement simplifié ) :



    J’ai 3 composants d’alignés, deux JTextFields et au centre une JComboBox.
    Pour le moment, mes composants sont dans un panel dont le layout GridLayout(1,3). Ce panel est lui-même dans le fenêtre en « BorderLayout.CENTER ». Voilà ce que ça donne en redimensionnant :



    On voit que les 3 composants font la même taille … normal vu que j’utilise un GridLayout. Ma question est donc, comment puis-je obtenir le rendu suivant ?



    J’aimerais que seuls les 2 JTextFields se redimensionnent et que le JComboBox garde une taille fixe.
    J’ai l’impression que la solution est simple et que je ne la vois pas …

    Je remercie d'avance les gens qui se pencheront sur le problème

    Merci,
    borozhim

    PS : Désolé sur le sujet est déjà traité, j'avoue avoir eu du mal à trouver des mots clés vraiment adaptés à mon problème ...

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Soit tu changes de layout, soit tu essaies peut-être de mettre une taille max à ta combo.

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    novembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2008
    Messages : 17
    Points : 22
    Points
    22
    Par défaut Résolution en bidouillant ...
    [Edit]
    Merci fr1man pour ta réponse. J'ai essayé de mettre une taille maximale à ma combo box mais sans succès, je vais quand même réessayer différemment, puisque ça devrait normalement fonctionner.
    [/Edit]

    Bon, j'ai finalement résolu mon problème, mais en bidouillant donc ça fonctionne mais ce n'est pas logique ...

    Je poste ma "solution" pour ceux qui auraient le même problème, mais je reste persuadé qu'il y a mieux

    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
    // Ajout du champ de texte et du combobox
    JPanel leftPanel = new JPanel(new BorderLayout());
    // Le texte est au centre pour qu'il se redimensionne
    leftPanel.add(firstTextField, BorderLayout.CENTER);
    // La box est à droite pour ne pas qu'elle se redimensionne
    leftPanel.add(comboBox, BorderLayout.EAST);
     
    // Ajout du second champ de texte
    JPanel rightPanel = new JPanel(new BorderLayout());
    rightPanel.add(secondTextField, BorderLayout.CENTER);
     
    // Ici on utilise un GridLayout 1,1 alors qu'on y ajoute deux composants ...
    JPanel line = new JPanel(new GridLayout(1,1));
    line.add(leftPanel);
    line.add(rightPanel);
     
    // On ajout le tout au centre de la fenêtre
    this.getContentPane().add(line, BorderLayout.CENTER);
    Si quelqu'un a mieux, merci de partager, ça me permettra de m'améliorer

    Le sujet est résolu

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Je t'ai fait un petit exemple avec GridBagLayout.
    Vois si ça peut t'aider :

    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
     
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
     
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JTextField;
     
     
    public class Fenetre extends JFrame {
     
    	private JTextField textField1 = new JTextField("TextField");
    	private JComboBox comboBox = new JComboBox(new String[] {"Combobox"});
    	private JTextField textField2 = new JTextField("TextField");
     
    	public void initAndDisplay() {
    		getContentPane().setLayout(new GridBagLayout());
     
    		GridBagConstraints constraints = new GridBagConstraints();
    		constraints.gridx = 0;
    		constraints.gridy = 0;
    		constraints.gridwidth = 1;
    		constraints.gridheight = 1;
    		constraints.fill = GridBagConstraints.HORIZONTAL;
    		constraints.anchor = GridBagConstraints.NORTHWEST;
    		constraints.weightx = 0.5;
    		constraints.weighty = 1;
    		getContentPane().add(textField1, constraints);
     
    		constraints.gridx = 1;
    		constraints.fill = GridBagConstraints.NONE;
    		constraints.weightx = 0;
    		constraints.weighty = 0;
    		getContentPane().add(comboBox, constraints);
     
     
    		constraints.gridx = 2;
    		constraints.fill = GridBagConstraints.HORIZONTAL;
    		constraints.weightx = 0.5;
    		getContentPane().add(textField2, constraints);
     
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		pack();
    		setVisible(true);
    	}
     
    	public static void main(String[] args) {
    		Fenetre fenetre = new Fenetre();
    		fenetre.initAndDisplay();
    	}
     
    }

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    novembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2008
    Messages : 17
    Points : 22
    Points
    22
    Par défaut
    Ok, je te remercie beaucoup. En effet, j'avais regardé du côté des GridBagLayout, mais j'avoue que j'ai toujours du mal à les utiliser

    En tout cas, ça fonctionne impec', merci !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/09/2010, 13h00
  2. [PHP 5.2] Comment supprimer les balise php mais pas les html
    Par pierrot10 dans le forum Langage
    Réponses: 1
    Dernier message: 19/05/2009, 23h28
  3. Les composants n'apparaissent pas dans la palette
    Par defluc dans le forum Composants VCL
    Réponses: 4
    Dernier message: 22/03/2008, 12h45
  4. redimensionnement d'une image, mais pas placée correctement
    Par maxfive7 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 19/08/2007, 23h39
  5. Réponses: 5
    Dernier message: 01/11/2006, 16h04

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