Partage
  • Partager sur Facebook
  • Partager sur Twitter

probléme de fenetre en java

probléme de layoutmanager

    23 mars 2010 à 1:47:19


    Bonjour
    voila je veux afficher une fenêtre qui aura 4 champs à droite et qui sont des Jlabels (nom,mot de passe,nouveau mot de passe,retapez votre mot de passe) bien sur à gauche y aura des JTextField correspondant à ces labels, voila comment j'ai découpé ma fenêtre , en premier temps y a un grand JPanel qui a un borderlayour qui met dans le sud "un bouton" et dans le centre les champs que j'ai mentionné en haut, j'ai préféré mettre les champs dans un panel qui a un gridlayout (4,2) biensur ce panel sera dans le centre du grand panel,
    le problème c'est qu'il m'affiche pas une grille de 4*2 mais une grille de 2*4 avec de grand label et de grand JTextField, comment je fais pour contrôler leur taille et régler ce dérèglement merci

    Voila le code:

    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.GridLayout;

    import javax.swing.*;


    public class Fenetre extends JFrame {
    private JPanel principal=new JPanel();
    private JPanel labeltexte=new JPanel();

    JLabel lab1=new JLabel("Nom");
    JLabel lab2=new JLabel("Mot");
    JLabel lab3=new JLabel("Nouve");
    JLabel lab4=new JLabel("Retape");
    private JTextField nom=new JTextField(20);
    private JPasswordField pass=new JPasswordField(8);
    private JPasswordField newPass=new JPasswordField(8);
    private JPasswordField retapPass=new JPasswordField(8);
    private JButton lancer=new JButton("lancer l application");
    public Fenetre(){
    this.setTitle("tp5");

    this.setSize(300,300);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setLocationRelativeTo(null);
    //GridLayout g=new GridLayout(4,2);
    this.labeltexte.setLayout(new GridLayout(4,2));
    labeltexte.add(lab1);
    labeltexte.add(lab2);
    labeltexte.add(lab3);
    labeltexte.add(lab4);
    labeltexte.add(nom);
    labeltexte.add(pass);
    labeltexte.add(newPass);
    labeltexte.add(retapPass);

    BorderLayout b=new BorderLayout();
    this.principal.setLayout(b);
    this.principal.add(labeltexte,b.CENTER);
    this.principal.add(lancer,b.SOUTH);
    this.setContentPane(principal);
    this.setVisible(true);

    }

    }
    • Partager sur Facebook
    • Partager sur Twitter
      23 mars 2010 à 2:01:47

      Bonjour à toi,
      Mets ton Layout en null :

      this.principal.setLayout(null);
      


      Cela te permettra de placer tes composants ou tu veux et de leurs donnés la taille que tu veux...

      En espérant t'avoir aider...

      Enjoy, El - Key
      • Partager sur Facebook
      • Partager sur Twitter
        23 mars 2010 à 2:05:56

        Je pense que tu peux utiliser setPreferredSize.
        • Partager sur Facebook
        • Partager sur Twitter
          23 mars 2010 à 10:50:01

          Je ne sais pas pourquoi mais le GridLayout porte à confusion.

          Les prefferedSize ne sont pas pris en compte dans le GridLayout, car par définition, celui-ci crée une grille qui s'adapte à la taille de son conteneur.
          Alors pour régler la taille du GridLayout, on peut ruser en faisant setPrefferedSize() et/ou setMaximumSize sur le conteneur.
          On peut aussi ajouter des JComponent personnalisés dans le GridLayout, qui eux-mêmes définiront un Layout et des composants... Mais dans ce cas, mieux vaut utiliser directement un GridBagLayout sur le conteneur de départ.

          Pour les formulaires, y'a aussi SpringLayout voire GroupLayout qui rendent super bien : http://java.sun.com/docs/books/tutoria [...] t/visual.html
          • Partager sur Facebook
          • Partager sur Twitter

          probléme de fenetre en java

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown