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 :

GridLayout dans BorderLayout?


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut GridLayout dans BorderLayout?
    BOnjour
    je veux mettre une grilayout dans mon borderLayout

    mais je comprends pas prourquoi il me le prend pas

    d'avance merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    contenu = maFrame.getContentPane();
            placeur = new BorderLayout();
            maGrille = new GridLayout(3,3);
            contenu.setLayout(placeur);
            contenu.add(maGrille,placeur.CENTER);

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 112
    Par défaut
    un Gridlayout n'est pas un composant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    contenu = maFrame.getContentPane();
    placeur = new BorderLayout();
    contenu.setLayout(placeur);
    
    JPanel pan = new JPanel();
    maGrille = new GridLayout(3,3);
    pan.setLayout(maGrille);
    
    contenu.add(pan,placeur.CENTER);

  3. #3
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut
    ah ok je m'en rappelerais

    merci

    alors j'ai tout fais ça marche nickel mais j'ai un probleme de placement

    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
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    /**
     *
     * @author KarKam Dvpt
     * @version 1.0
     */
     
    package ihm;
     
    import morpion.Zone;
     
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.*;
     
    public class Ihm {
     
        private JFrame maFrame;
        /*Ma grille*/
        private Container contenu;
        private BorderLayout placeur;
        private GridLayout maGrille;
        private Zone[][] cases;
     
        /*Mes images*/
        private final ImageIcon CROIX = new ImageIcon("croix.gif");
        private final ImageIcon ROND = new ImageIcon("rond.gif");
        private final ImageIcon BLANC = new ImageIcon("blanc.gif");
        /*Barre de Menu*/
        private JMenuBar monMenu;
        private JMenu menuJeu;
        private JMenu menuOptions;
        private JMenuItem itemNouveau;
        private JMenuItem itemQuitter;
        private JMenuItem itemPropos;
     
        /*Mes listeners*/
        private ActionListener actionNouveau = new ActionNouveau();
        private ActionListener actionQuitter= new ActionQuitter();
        private ActionListener actionPropos = new ActionPropos();
        private MouseListener actionSouris = new ActionSouris();
     
        public Ihm() {
            maFrame= new JFrame("Morpion -- KarKam Dvpt.");
            maFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            maFrame.setResizable(false);
            maFrame.setSize(300,300);
            maFrame.setLocationRelativeTo(maFrame.getParent());
     
            /*Ma barre de menu*/
            monMenu = new JMenuBar();
            menuJeu = new JMenu("Jeu");
            menuOptions = new JMenu("Options");
            itemNouveau = new JMenuItem("Nouveau");
            itemNouveau.addActionListener(actionNouveau); 
            itemQuitter =  new JMenuItem("Quitter");
            itemQuitter.addActionListener(actionQuitter);
            itemPropos = new JMenuItem("A propos...");
            itemPropos.addActionListener(actionPropos);
            maFrame.setJMenuBar(monMenu);
            monMenu.add(menuJeu);
            monMenu.add(menuOptions);
            menuJeu.add(itemNouveau);
            menuJeu.add(itemQuitter);
            menuOptions.add(itemPropos);
     
            /*Ma grille*/
            JPanel panCenter = new JPanel();
            JPanel panNord = new JPanel();
            JPanel panSud = new JPanel();
            JPanel panEst = new JPanel();
            JPanel panOuest = new JPanel();
            panEst.setBackground(Color.WHITE);
            panOuest.setBackground(Color.WHITE);
            panNord.setBackground(Color.WHITE);
            panSud.setBackground(Color.WHITE);
            contenu = maFrame.getContentPane();
            placeur = new BorderLayout();
            maGrille = new GridLayout(3,3);
            panCenter.setLayout(maGrille);
            contenu.setLayout(placeur);
            contenu.add(panCenter,placeur.CENTER);
            contenu.add(panOuest,placeur.WEST);
            contenu.add(panEst,placeur.EAST);
            contenu.add(panSud,placeur.SOUTH);
            contenu.add(panNord,placeur.NORTH);
     
     
            cases = new Zone[3][3];
            // Créer les cases du Morpion
    	for (int i = 0; i < cases.length; i++) {
    	    for (int j = 0; j < cases[i].length; j++) {
    		cases[i][j] = new Zone(i,j);
                    cases[i][j].setBorder(BorderFactory.createLineBorder(Color.YELLOW));
    	    }
    	}
     
             for (int i=0; i < cases.length;i ++){
              for (int j=0;j < cases[i].length;j++){
                  cases[i][j].setIcon(BLANC);
                  cases[i][j].addMouseListener(actionSouris);
              }
          }
            // construction des composants
          for (int i=0; i < cases.length;i ++){
              for (int j=0;j < cases[i].length;j++){
                  contenu.add(cases[i][j]);
              }
          }
     
            maFrame.setVisible(true);
        }
     
        public class ActionQuitter implements ActionListener{
            public void actionPerformed (ActionEvent e){
                System.exit(0);
            }
        }
        public class ActionPropos implements ActionListener{
            public void actionPerformed(ActionEvent e){
                JOptionPane.showMessageDialog(new JOptionPane(),"Morpion\nKarKam Dvpt.\nv1.0","Info",JOptionPane.INFORMATION_MESSAGE);
            }
        }
        public class ActionNouveau implements ActionListener{
            public void actionPerformed(ActionEvent e){
                for(int i=0;i< cases.length;i++){
                    for(int j=0;j<cases[i].length;j++){
                        cases[i][j].setIcon(BLANC);
                    }
                }
            }
        }
        public class ActionSouris implements MouseListener{
            public void mousePressed(MouseEvent e){
            if(SwingUtilities.isLeftMouseButton(e)){
                Zone z =(Zone)e.getSource();
                System.out.print("Click Gauche sur ("+z.getX()+","+z.getY()+")");
                //..
            }    
            }
            public void mouseReleased(MouseEvent e){
     
            }
            public void mouseEntered(MouseEvent e){
     
            }
            public void mouseExited(MouseEvent e){
     
            }
            public void mouseClicked(MouseEvent e){
     
            }
        }
     
    }

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tu pourrais le décrire car j'ai un peu la flemme de me fader toujt ton code pour pouvoir essayer de trouver...

  5. #5
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut
    j'ai un borderlayout
    autour ce sont des panel blanc
    au center un panel qui contient un grid Layout
    ce gridlayout contient 3*3 JLabel

    autour de chaque case (JLabel) de mon morpion, j'ai mis une bordure Jaune
    et le carré noir c'est la case(2,2)

    voila d'avance merci
    Images attachées Images attachées  

  6. #6
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Ajoutes tes JLabels à panCenter au lieu de contenu ça ira mieux...

  7. #7
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut
    aaaah ça va mieux

    mais ils prennent pas leur place

    comme dans une grille 3*3

    j'en ai un seul

    moi qui voulait manipuler les layout en les imbriquant...
    Images attachées Images attachées  

  8. #8
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Tu fais bien ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
           // construction des composants
          for (int i=0; i < cases.length;i ++){
              for (int j=0;j < cases[i].length;j++){
                  panCenter.add(cases[i][j]);
              }
          }
    Que fais-tu dans le constructeur de Zone ?

    Petite remarque : les constantes BorderLayout.NORTH, etc, sont statiques => ne pas les utiliser en faisant placeur.NORTH.

  9. #9
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut
    Zone c'est une classe qui hérite de JLabel pour rajouter 2 méthode utiles apres

    ... voila

    une question en passant j'ai essayé de définir les size sur les JPanel mais ça marche pas
    comment définir la taille des espaces borderLayout.NORTH,SOUTH...etc

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 72
    Par défaut
    Salut

    une question en passant j'ai essayé de définir les size sur les JPanel mais ça marche pas
    comment définir la taille des espaces borderLayout.NORTH,SOUTH...etc
    Je crois que BorderLayout n'utilise que les preferredSize pour optimiser les emplacements, donc essaye de remplacer setSize() par setPreferredSize()

    Sinon tu peux montrer le code du consturcteur de zone?

  11. #11
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut
    ah oui je venais juste poster pour dire que j'aivais trouver le setPreferredSize
    ça marche imppec merci quand meme

    classe zone:
    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
    package morpion;
     
    import javax.swing.JLabel;
     
    public class Zone extends JLabel {
     
        private int x;
        private int y;
     
        public Zone(int i,int j) {
            super();
            this.x=i;
            this.y=j;
        }
     
        public int getX(){
            return this.x;
        }
     
        public int getY(){
            return this.y;
        }
    }

  12. #12
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut
    quand je clique dessus j'ai bien le retour que je clique sur la zone qui devrait etre a sa place

    alors j'en déduit que le ImageIcon ne se charge pas alors mais ya pas les border Jaune ??
    donc je m'interroge

    morpion

  13. #13
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Citation Envoyé par LeXo
    quand je clique dessus j'ai bien le retour que je clique sur la zone qui devrait etre a sa place

    alors j'en déduit que le ImageIcon ne se charge pas alors
    Tu m'excuseras mais j'ai rien compris...

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 72
    Par défaut
    Essayes de remplacer getX par getHix et getY par getYgrec !!

  15. #15
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut
    je le modifies pour mettre un JOptionPane et que tu vois mais ça marche nickel mais je regarderais ton conseil

    mon probleme c l'affichage des mes zone(JLabel) dans mon gridLayout

    que l'image ne saffiche pas -> C'est un probleme de chargement mais je ne vois pas les bordures..??

    voila vous pouvez regarder et faite un clik gauche sur la zone grise

    Morpion

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 72
    Par défaut
    Ben en fait en appelant les méthodes de ta classe Zone getX et getY, tu surcharges les fonctions de JLabels éponymes (du même nom) qui sont utilisées pour placer le composant.

  17. #17
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    En fait, tu surcharges les méthode getX() et getY() de la classe JLabel (et plus précisément de JComponent). Du coup, je ferai ce que dit Loïc.

    Mais je ne suis pas sûr que ton problème vienne de là...

    [EDIT] Grillé...

  18. #18
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut
    j'ai pas vu ces méthode dans la classe JLabel

    mais oui c pas ce qui répond a ma question

    je voudrais bien voir mes 9 bordures jaunes dans ma grille

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 72
    Par défaut
    Mais je ne suis pas sûr que ton problème vienne de là...

    En modifiant x et y par a et b dans le constructeur de Zone, j'obtiens bien une grille 3*3...
    C'était bien ca le probleme?

  20. #20
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Ca vient bien de là.
    Et en fait je comprends ce qu'il se passe. En fait la bordure que l'on observe dans la version "foireuse" (c'est pas méchant), est composée des 9 bordures placées aux pixels (0,0), (0,1), (0,2), (1,0), etc...
    Du coup elle est plus épaisse que celle de la version correcte, et c'est pour ça qu'on dirait qu'il n'y en a qu'une.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Plusieurs Gridlayout dans un borderlayout
    Par Xenthys dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 12/03/2013, 16h47
  2. Centrer un gridLayout dans une fenetre plein ecran
    Par jm49 dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 19/03/2009, 15h29
  3. probleme avec GridLayout dans JPanel
    Par kortnor dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 04/08/2007, 20h03
  4. Creer un gridlayout dans un border layout
    Par rider74 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 22/10/2006, 14h31
  5. lecture de flux video dans borderLayout.CENTER
    Par Dsphinx dans le forum Multimédia
    Réponses: 5
    Dernier message: 04/08/2006, 18h30

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