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

AWT/Swing Java Discussion :

Agencer les éléments d'une fenêtre


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut Agencer les éléments d'une fenêtre
    Bonjour tout le monde

    J'ai des dificulté à positionner les bouton, label, et les zonne de texte dans une fenetre JFrame.

    J'ai trouvé un cour sur un livre j'ai compris le principe par rapport au célule pour indiquer l'emplacement sur la fenêtre.

    Mon probleme est que les element s'empale les uns sur les autre sur la fenêtre.

    Voici le 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
     
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.awt.image.*; 
     
    public class Banque extends javax.swing.JFrame {
     
     
    	public Banque() {
     
     
    	super("pret banquaire");
    	setSize(700,500);
    	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	setVisible(true);
     
    	GridBagLayout gridbag = new GridBagLayout();
    	GridBagConstraints constraints = new GridBagConstraints();
    	getContentPane().setLayout(gridbag);
     
    	JLabel creditinsset = new JLabel("Crédit INSSET");
    	constraints.gridx=0;
    	constraints.gridy=1;
    	constraints.gridwidth=0;
    	constraints.gridheight=2;
    	constraints.weightx=0;
    	constraints.weighty=0;
    	constraints.fill = GridBagConstraints.NONE;
    	constraints.anchor = GridBagConstraints.CENTER;
     
    	JLabel sommedemande = new JLabel("Somme demandé");
    	constraints.gridx=0;
    	constraints.gridy=0;
    	constraints.gridwidth=1;
    	constraints.gridheight=1;
    	constraints.weightx=30;
    	constraints.weighty=30;
    	constraints.fill = GridBagConstraints.NONE;
    	constraints.anchor = GridBagConstraints.CENTER;
     
    	JTextField sommepret = new JTextField(15);
    	constraints.gridx=0;
    	constraints.gridy=0;
    	constraints.gridwidth=1;
    	constraints.gridheight=1;
    	constraints.weightx=30;
    	constraints.weighty=30;
    	constraints.fill = GridBagConstraints.NONE;
    	constraints.anchor = GridBagConstraints.CENTER;
     
    	JButton quit = new JButton("Quitter");
    	constraints.gridx=1;
    	constraints.gridy=2;
    	constraints.gridwidth=0;
    	constraints.gridheight=1;
    	constraints.weightx=30;
    	constraints.weighty=30;
    	constraints.fill = GridBagConstraints.NONE;
    	constraints.anchor = GridBagConstraints.CENTER;
     
     
    	gridbag.setConstraints(quit, constraints);
     
    	gridbag.setConstraints(creditinsset, constraints);
    	getContentPane().add(creditinsset);
    	getContentPane().add(quit);
     
    	show();
    }
     
    		public static void main(String[] args) {
     
    		Banque input = new Banque();
    }
     
    }
    Pouvez vous m'aider à regler ce probleme

    Merci

    Cordialement

    A bientôt

  2. #2
    Membre expérimenté Avatar de schneidb
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 236
    Par défaut
    Bonjour,

    une gridBagLayout c'est un peu comme un tableau, il faut donc spécifier des constraints.gridx=0; constraints.gridy=1; différent à chaque fois pour éviter la superposition.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Rebonjour tout le monde

    C'est ce que j'ai plusieur foi mai j'ai l'impression que ca ne fonctionne pas.

    Mon code est il corecte?

    Merci

    Cordialement

    A bientôt

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonjour tout le monde

    Mon probleme est que dans mon livre, les paramêtre ne sont pas expliqués à fond.

    Voici les paramêtres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
       constraints.gridx=0;
    	constraints.gridy=1;
    	constraints.gridwidth=0;
    	constraints.gridheight=2;
    	constraints.weightx=0;
    	constraints.weighty=0;
    	constraints.fill = GridBagConstraints.NONE;
    	constraints.anchor = GridBagConstraints.CENTER;
    Pourriez vous me donner plus de précision sur ces paramêtre, ce qu'il fond exactement.

    Merci

    Cordialement

    A bientôt

  5. #5
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Un de tes problèmes, c'est que tu appliques les memes contraintes aux 2 composants.

    Tu modifies plusieurs fois constraints, mais tu ne l'utilises pas. Ce n'est qu'à la fin que tu associes ces contraintes (donc 2 fois la meme) à tes 2 composants.

    Essaie de faire :
    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
       GridBagLayout gridbag = new GridBagLayout();
       GridBagConstraints constraints = new GridBagConstraints();
       getContentPane().setLayout(gridbag);
     
       JLabel creditinsset = new JLabel("Crédit INSSET");
       constraints.gridx=0;
       constraints.gridy=1;
       constraints.gridwidth=1;
       constraints.gridheight=2;
       constraints.weightx=0;
       constraints.weighty=0;
       constraints.fill = GridBagConstraints.NONE;
       constraints.anchor = GridBagConstraints.CENTER;
     
       gridbag.setConstraints(creditinsset, constraints);
       getContentPane().add(creditinsset);
     
       JButton quit = new JButton("Quitter");
       constraints.gridx=1;
       constraints.gridy=2;
       constraints.gridwidth=1;
       constraints.gridheight=1;
       constraints.weightx=0;
       constraints.weighty=0;
       constraints.fill = GridBagConstraints.NONE;
       constraints.anchor = GridBagConstraints.CENTER;
     
     
       gridbag.setConstraints(quit, constraints);
       getContentPane().add(quit);
     
       show();
    }
     
          public static void main(String[] args) {
     
          Banque input = new Banque();
    }
     
    }
    Je te conseille également de regarder l'api, un exemple assez complet y est donné.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Rebonjour tout le monde

    Que voulez vous dire par
    Je te conseille également de regarder l'api, un exemple assez complet y est donné
    Pourriez vous me dire à quoi sert.

    constraints.weightx=0;
    constraints.weighty=0;

    et

    constraints.gridwidth=1;
    constraints.gridheight=2;

    Afin de mieux comprendre.

    Merci

    Cordialement

    A bientôt

  7. #7
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    weightx c'est un coefficient d'agrandissement de ton composant en largeur. Si ce paramètre est égal à 0.0 alors ton composant gardera sa largeur originale même si tu agrandi l'interface. Dans le cas contraire, le composant va profiter du nouvel espace pour s'agrandir. L'inportance de la valeur que tu donne à ce paramètre détermine bien évidemment l'intensité de l'élargissement.

    weighty c'est la même chose que weighx, mais en hauteur.

    gridwidth c'est l'équivalent du colspan du html. Ca détermine combien de colonnes va occuper ton composant.

    De même, gridheight c'est l'équivalent du rowspan du html. Ca détermine le nombre de ligne que va occuper ton composant.

    J'espère que je suis clair.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonsoir tout le monde

    Derniere question, comment faire pour afficher la grilles pour positionner les élèments.

    Merci

    Cordialement

    A bientôt

  9. #9
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Citation Envoyé par argon
    Que voulez vous dire par
    Je te conseille également de regarder l'api, un exemple assez complet y est donné
    L'api est la documentation standard de Java. Elle est disponible sur le site de sun, et aussi sur ce site (avec un moteur de recherche, ce qui est bien pratique).

    Le GridBagLayout est documenté sur cette page. Ils donnent un exemple d'utilisation.

    [EDIT] Pour afficher la grille, il faudrait ajouter des JPanels ou des JLabels dans chaque case, et leur donner une Border. Pas très pratique.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonsoir tout le monde

    Pour afficher la grille, il faudrait ajouter des JPanels ou des JLabels dans chaque case, et leur donner une Border.
    Pourais je avoir un tout petit exemple

    Merci.

    Cordialement

    A bientôt

  11. #11
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Un truc comme ca :
    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
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.awt.image.*;
     
    public class Banque extends javax.swing.JFrame {
     
    GridBagLayout gridbag;
    GridBagConstraints constraints;
     
      private Component creerComposantVide() {
        JLabel l = new JLabel();
        l.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
        l.setPreferredSize(new Dimension(100, 15));
        return l;
      }
     
      /**
       * x : nombre de cases par lignes
       * y : nombre de cases par colonnes
       */
      private void remplirGrille(int x, int y) {
        constraints.gridwidth = 1;
        constraints.gridheight = 1;
        for(int i = 0; i < x; i++) {
          constraints.gridx = i;
          for(int j = 0; j < y; j++) {
            constraints.gridy = j;
            Component c = creerComposantVide();
            gridbag.setConstraints(c, constraints);
            getContentPane().add(c);
          }
        }
      }
     
     
      public Banque() { 
        super("pret banquaire");
        setSize(700,500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
     
        gridbag = new GridBagLayout();
        constraints = new GridBagConstraints();
        getContentPane().setLayout(gridbag);
     
        constraints.fill = GridBagConstraints.NONE;
        constraints.anchor = GridBagConstraints.CENTER;
        constraints.gridwidth=1;
        constraints.gridheight=1;
        constraints.weightx=0;
        constraints.weighty=0;
     
        remplirGrille(5, 5);
     
        JLabel creditinsset = new JLabel("Crédit INSSET");
        constraints.gridx=0;
        constraints.gridy=1;
        gridbag.setConstraints(creditinsset, constraints);
        getContentPane().add(creditinsset);
     
        JButton quit = new JButton("Quitter");
        constraints.gridx=1;
        constraints.gridy=2;
        constraints.gridwidth=3;
        constraints.fill = GridBagConstraints.BOTH;
        gridbag.setConstraints(quit, constraints);
        getContentPane().add(quit);
     
        show();
      }
     
      public static void main(String[] args) {
        Banque input = new Banque();
      }
    }
    Ca permet de jouer avec les paramètres pour mieux visualiser le principe.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut maintenant je suis sur java 1.5
    Bonsoir tout le monde

    Je ne sais pas pourquoi ile ne reconait plus getContentPane().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Compostconv.java:23: cannot find symbol
    symbol  : method getContentPanel()
    location: class Compostconv
            getContentPane().setLayout(gridbag);
    Que puis je faire?

    Cordialement

    A bientôt

    Merci

  13. #13
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    getContentPane() il connaît, mais getContentPanel(), moyen .
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Excuseé moi,j'ai pas fait attention.


    Comme vous pouvez voir, il ne connait pas getContentPane().


    Compostconv.java:23: cannot find symbol
    symbol : method getContentPane()
    location: class Compostconv
    getContentPane().setLayout(gridbag);
    ^
    Il ne faudrait pas mêttre set au lieu de get.

  15. #15
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Oulà, je viens de relire le sujet, c'est vieux, tout ça !

    Sinon, es-tu sûr que la classe Compostconv hérite de JFrame (ou JDialog ou JApplet ou JInternalFrame) ?
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/05/2007, 15h58
  2. Agencer les éléments d'une fenêtre
    Par argon dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 17/02/2006, 08h17
  3. [TestStand] Compter les éléments d'une chaîne de caractères
    Par capblans dans le forum Autres langages
    Réponses: 2
    Dernier message: 29/04/2005, 09h29
  4. Réponses: 2
    Dernier message: 11/08/2003, 09h43

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