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 :

Problème avec un CardLayout


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut Problème avec un CardLayout
    Salut !!


    J'ai un souci avec un CardLayout qui me pourrit la vie; je vous explique :

    C'est pour le design d'une grille de sudoku et les listener qui vont avec.

    Chaque case a le Layout d'un CardLayout. Cette case est dans mon cas une pile qui va contenir 2 composants (dans un cas, il s'agit d'un bouton classique -> choix final; dans l'autre, c'est un ensemble de 9 nouveaux petits boutons -> les possibilités).

    Mon problème, c'est que j'aimerais déclarer la fameuse case dans ma classe plutot que dans mon constructeur (histoire de pouvoir l'utiliser dans une méthode plus loin). Or, si je la déclare à cet endroit, j'ai l'impression qu'il n'existe qu'une instance de cette case alors que j'en voudrais 81. A noter que si je la déclare dans le constructeur, y'a aucun souci ...


    Voici le code (la case qui me cause problème est la variable jpcasefinale) :

    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
     
    public class PanelVue1 extends JPanel implements Observer{
     
        private Placement sudomodele;
     
        JPanel pane1;
        JPanel sousgrille;
        JPanel boutonfinal;    
        JPanel grilleposs;    
        JButton [][] tabjb = new JButton[9][9];
        JButton [][][] tabjbposs = new JButton[9][9][9];    
        JPanel jpcasefinale;
        CardLayout pilecarte = new CardLayout();;                                    
     
        public PanelVue1(Placement smodele){
     
            int i,j,k;
     
            this.sudomodele = smodele;        
            smodele.addObserver(this);
            this.setLayout(new BorderLayout());                
     
            pane1 = new JPanel();
            pane1.setLayout(new GridLayout(3,3,1,1));
            pane1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createBevelBorder(0,Color.LIGHT_GRAY,Color.GRAY),"Grille"));        
            pane1.setPreferredSize(new Dimension(675,675));
            for (i=0;i<9;i++) {
                sousgrille = new JPanel();
                sousgrille.setLayout(new GridLayout(3, 3));
                sousgrille.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY));
                for (j=0;j<9;j++){                        
     
                    jpcasefinale = new JPanel();                
                    jpcasefinale.setLayout(pilecarte);    
     
                    MouseListener buttonListener = new MouseAdapter(){
                        public void mouseClicked(MouseEvent ev) {                       
                            JButton obj = (JButton)ev.getSource();
                            String s = obj.getActionCommand();
                            int []coord=new int[2];
                            int int1,int2,int3;
                            if (obj.getActionCommand().startsWith("bfin")) {
                                int1 = Integer.parseInt(s.substring(4,5));
                                int2 = Integer.parseInt(s.substring(5,6));
                                convgrlcoord(int1,int2,coord);
                                if (SwingUtilities.isRightMouseButton(ev) || ev.isPopupTrigger()){                                                             
                                    if (sudomodele.getChiffrechoisi() != 0 ){                                    
                                        sudomodele.clicp1fbd(coord);                                                       
                                    }                                                                
                                    if (sudomodele.getGrillep()[coord[0]][coord[1]].isEtatpile()==true) swap();//pilecarte.next(jpcasefinale);
                                }
                                else if (SwingUtilities.isLeftMouseButton(ev) || ev.isPopupTrigger()){                                                              
                                    if (sudomodele.getChiffrechoisi() != 0 ){                                    
                                        sudomodele.clicp1fbg(coord);
                                    }
                                }
                            }                        
                            else if (obj.getActionCommand().startsWith("bpos")){
                                int1 = Integer.parseInt(s.substring(4,5));
                                int2 = Integer.parseInt(s.substring(5,6));
                                int3 = Integer.parseInt(s.substring(6,7));       
                                convgrlcoord(int1,int2,coord);
                                if (SwingUtilities.isRightMouseButton(ev) || ev.isPopupTrigger()){                                                               
                                    sudomodele.clicp1pbd(coord,int3);
                                    if (sudomodele.getGrillep()[coord[0]][coord[1]].isEtatpile()==false) swap();//pilecarte.next(jpcasefinale);                            
                                }
                                else if (SwingUtilities.isLeftMouseButton(ev) || ev.isPopupTrigger()){                                                                    
                                    sudomodele.clicp1pbg(coord,int3);
                                    if (sudomodele.getGrillep()[coord[0]][coord[1]].isEtatpile()==false) swap();//pilecarte.next(jpcasefinale);                        
                                }
                            }
                        }
                    };             
                    boutonfinal = new JPanel();
                    boutonfinal.setLayout(new BorderLayout());
                    tabjb[i][j] = new JButton();                
                    tabjb[i][j].setFont(new Font("TimesRoman",1,23));                
                    tabjb[i][j].setActionCommand("bfin"+Integer.toString(i)+Integer.toString(j));
                    tabjb[i][j].addMouseListener(buttonListener);                
                    boutonfinal.add(tabjb[i][j],BorderLayout.CENTER);
                    grilleposs = new JPanel();
                    grilleposs.setLayout(new GridLayout(3,3));
                    grilleposs.setBorder(BorderFactory.createLineBorder(Color.GRAY));
                    for (k=0;k<9;k++){
                        tabjbposs[i][j][k] = new JButton();
                        tabjbposs[i][j][k].setBorder(null);
                        tabjbposs[i][j][k].setMargin(new Insets(0,0,0,0));
                        tabjbposs[i][j][k].setFont(new Font("TimesRoman",0,15));
                        tabjbposs[i][j][k].setActionCommand("bpos"+Integer.toString(i)+Integer.toString(j)+Integer.toString(k));
                        tabjbposs[i][j][k].addMouseListener(buttonListener);
                        grilleposs.add(tabjbposs[i][j][k]);
                    }
                    jpcasefinale.add(boutonfinal, "choixfinal");
                    jpcasefinale.add(grilleposs, "grillepossibilites");
                    sousgrille.add(jpcasefinale);
                }
                pane1.add(sousgrille);
            }
            this.add(pane1, BorderLayout.CENTER);
        }
    Pour mieux comprendre, voilà ce que j'obtiens (quelle que soit la case sur laquelle je clique-droit, c'est toujours sur la dernière que s'opère l'action).




    Un tout grand merci d'avance si vous pouvez m'éclairer ...

  2. #2
    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
    Bonjour,

    j'ai essayé de lire ton code, mais là c'est un peu indigeste. Mon conseil ne portera pas sur le code, mais plutôt sur la conception.

    Ton problème vient peut-être du fait que tu n'as qu'une seule instance de CardLayout, mais sûrement du fait que tu n'as qu'une seule référence vers un CardLayout. Mais j'ai pas assez bien lu ton code.

    Pourquoi ne pas faire une classe à part pour ton JPCaseFinale ? Quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class JPCaseFinale extends JPanel implements MouseListener {
     
      public JPCaseFinale() {
        super(new CardLayout());
        addMouseListener(this);
     
        ...
      }
     
      public void mouseClicked() {
        ...
      }
      ...
    }
    "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.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut
    Merci d'avoir répondu !

    Je veux bien mettre jpcasefinale dans une classe dédiée, mais je vois pas en quoi ca fera avancer le problème ...

    Moi, ce que je désire, c'est de pouvoir accéder à pilecarte et jpcasefinale à partir de n'importe où dans la classe panelvue1 ... c'est tout !...

    Sinon, effectivement, le fait de déclarer et instancier pilecarte à cet endroit ne peut pas arranger les choses ... mais je teste tout ce qui ets possible tellement j'en ai marre.

    Pour que ça fonctionne, je dois en fait faire ceci :
    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
     
    public class PanelVue1 extends JPanel implements Observer{    
     
        private Placement sudomodele;
     
        JPanel pane1;
        JPanel sousgrille;
        JPanel boutonfinal;    
        JPanel grilleposs;    
        JButton [][] tabjb = new JButton[9][9];
        JButton [][][] tabjbposs = new JButton[9][9][9];    
     
        public PanelVue1(Placement smodele){
     
            int i,j,k;        
            this.sudomodele = smodele;        
            smodele.addObserver(this);
            this.setLayout(new BorderLayout());                
     
            pane1 = new JPanel();
            pane1.setLayout(new GridLayout(3,3,1,1));
            pane1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createBevelBorder(0,Color.LIGHT_GRAY,Color.GRAY),"Grille"));        
            pane1.setPreferredSize(new Dimension(675,675));
            for (i=0;i<9;i++) {
                sousgrille = new JPanel();
                sousgrille.setLayout(new GridLayout(3, 3));
                sousgrille.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY));
                for (j=0;j<9;j++){                
                    final CardLayout pilecarte = new CardLayout();                                
                    final JPanel jpcasefinale = new JPanel();                
                    jpcasefinale.setLayout(pilecarte);                
                    MouseListener buttonListener = new MouseAdapter(){
                        public void mouseClicked(MouseEvent ev) {                        
                            JButton obj = (JButton)ev.getSource();
                            String s = obj.getActionCommand();
                            int []coord=new int[2];
                            int int1,int2,int3;
                            if (obj.getActionCommand().startsWith("bfin")) {
                                int1 = Integer.parseInt(s.substring(4,5));
                                int2 = Integer.parseInt(s.substring(5,6));
                                convgrlcoord(int1,int2,coord);
                                if (SwingUtilities.isRightMouseButton(ev) || ev.isPopupTrigger()){                                                             
                                    if (sudomodele.getChiffrechoisi() != 0 ){                                    
                                        sudomodele.clicp1fbd(coord);                                                       
                                    }                                                                    
                                    if (sudomodele.getGrillep()[coord[0]][coord[1]].isEtatpile()==true) pilecarte.next(jpcasefinale);
                                }
                                else if (SwingUtilities.isLeftMouseButton(ev) || ev.isPopupTrigger()){                                                              
                                    if (sudomodele.getChiffrechoisi() != 0 ){                                    
                                        sudomodele.clicp1fbg(coord);
                                    }
                                }
                            }                        
                            else if (obj.getActionCommand().startsWith("bpos")){
                                int1 = Integer.parseInt(s.substring(4,5));
                                int2 = Integer.parseInt(s.substring(5,6));
                                int3 = Integer.parseInt(s.substring(6,7));       
                                convgrlcoord(int1,int2,coord);
                                if (SwingUtilities.isRightMouseButton(ev) || ev.isPopupTrigger()){                                                               
                                    sudomodele.clicp1pbd(coord,int3);
                                    if (sudomodele.getGrillep()[coord[0]][coord[1]].isEtatpile()==false) pilecarte.next(jpcasefinale);                            
                                }
                                else if (SwingUtilities.isLeftMouseButton(ev) || ev.isPopupTrigger()){                                                                    
                                    sudomodele.clicp1pbg(coord,int3);
                                    if (sudomodele.getGrillep()[coord[0]][coord[1]].isEtatpile()==false) pilecarte.next(jpcasefinale);                        
                                }
                            }
                        }
                    };             
                    boutonfinal = new JPanel();
                    boutonfinal.setLayout(new BorderLayout());
                    tabjb[i][j] = new JButton();                
                    tabjb[i][j].setFont(new Font("TimesRoman",1,23));                
                    tabjb[i][j].setActionCommand("bfin"+Integer.toString(i)+Integer.toString(j));
                    tabjb[i][j].addMouseListener(buttonListener);                
                    boutonfinal.add(tabjb[i][j],BorderLayout.CENTER);
                    grilleposs = new JPanel();
                    grilleposs.setLayout(new GridLayout(3,3));
                    grilleposs.setBorder(BorderFactory.createLineBorder(Color.GRAY));
                    for (k=0;k<9;k++){
                        tabjbposs[i][j][k] = new JButton();
                        tabjbposs[i][j][k].setBorder(null);
                        tabjbposs[i][j][k].setMargin(new Insets(0,0,0,0));
                        tabjbposs[i][j][k].setFont(new Font("TimesRoman",0,15));
                        tabjbposs[i][j][k].setActionCommand("bpos"+Integer.toString(i)+Integer.toString(j)+Integer.toString(k));
                        tabjbposs[i][j][k].addMouseListener(buttonListener);
                        grilleposs.add(tabjbposs[i][j][k]);
                    }
                    jpcasefinale.add(boutonfinal, "choixfinal");
                    jpcasefinale.add(grilleposs, "grillepossibilites");
                    sousgrille.add(jpcasefinale);
                }
                pane1.add(sousgrille);
            }
            this.add(pane1, BorderLayout.CENTER);
        }

  4. #4
    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
    Ton problème vient du fait que tu ne disposes que d'une seule référence vers un seul objet des types JPanel et CardLayout alors que tu en as 81.

    Vu la manière dont ta fenêtre est construite, ces références pointent vers le dernier objet construit (la case en bas à droite). Donc quand tu appelles jpCaseFinale.machin() ou pileCarte.machin(), tu agis toujours sur les mêmes objets qui correspondent à la case en bas à droite.

    Ce qui est nécéssaire, c'est d'avoir un tableau de 81 JPanels (pour tes 81 cases). Sans ça, tu ne pourras rien faire.

    Enfin, l'avantage de faire une classe comme je t'ai indiqué, c'est que chaque case s'écoute elle même (implements MouseListener et addMouseListener(this);) et se gère toute seule. Comme ça, ta classe principale n'a même plus besoin d'un tableau de cases puisqu'elle n'a plus besoin de les gérer. Il suffit de les construire, et de les ajouter au bon endroit. Ensuite, elles se démerdent.

    P.S. la migration demandera surtout des copier-coller.
    "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.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut
    Oulalah... ça se complique :

    - Ton idée de nouvelle classe est surement très bonne ! Cependant, je me vois mal changer tout mon code (car celui-ci dépend fortement de l'implémentation telle qu'elle est actuellement dans la classe panelvue1).

    - Sinon, comme marqué dans mon 2nd message, tout fonctionne parfaitement si je déclare 81 pilecarte et 81 jpcasefinale ! Là, il n'y a pas de souci ! Mais moi, j'ai besoin de les déclarer en "global"...

    N'y a-t-il donc pas d'autres alternatives que de créer cette classe ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut
    Et apparement, tu n'as probablement pas vu que je ne plaçais pas d'écouteur sur jpcasefinale (qui en soit ne m'intéresse pas) mais bien sur boutonfinal et grilleposs qui sont les deux composants que contient mon CardLayout.

    En fait, les 81 cases (qu'on voit sur l'image postée plus haut) peuvent soit etre une case qui contient la valeur finale, soit une grille de 3*3 dans laquelle on met les possibilités.
    Suivant les clics gauches ou droits, on passe de l'un à l'autre.
    Donc, je dois bien mettre un ecouteur sur ces 2 composants, non ?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut
    Personne ne voit ?

  8. #8
    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 Mike888
    Mais moi, j'ai besoin de les déclarer en "global"...
    Je ne vois pas ce que tu veux dire. L'équivalent des variables globales (en C par exemple) est les variables statiques en Java.

    Cependant, si tu veux, tu peux utiliser une variable statique de type panelvue1, et elle contiendra toujours les 81 boutons. Une petite méthode getCases qui renvoie une tableau ira très bien.

    Concernant les listeners, tu as très bien compris. Le truc, c'est qu'avant, tu avais 81x2 listeners qui écoutaient tous une case différente, mais agissaient tous sur la même case.

    Le principal c'est que ça marche. Mais ton code va être très dur à maintenir (corriger des bugs, ajouter des fonctionnalités, ...). Faire une classe pour la case me semble une bonne idée (avis subjectif, puisque quand j'ai codé mon sudoku j'ai fait une classe pour les cases). N'empêche que le jour où je veux remplacer mes cases par, disons, des JComboBox, je n'aurai aucun problème. Il me suffira de réécrire une classe avec les mêmes méthodes, et de changer un ou deux mots dans le reste du programme.
    "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.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut
    Je croyais que le topic etait parti dans les oubliettes du forum lol...
    Non, en fait, j'ai remodifié mon code et ça tourne impec maintenant !

    J'avais evidemment créé un classe Case (c'est un peu normal !!); j'ai pas posté tout mon code par ce que sinon, ça devenait ouf .

    Cependant, je suis occupé à bien me prendre la tete pour la serialisation... (je sens que je vais poster dans l'autre sous-cat car je suis bloqué).


    Pour info, voilà le code modifié et fonctionnel :

    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
    public class PanelVue1 extends JPanel implements Observer{    
     
        private static final long serialVersionUID = -6098308324626190230L;
     
        private Placement sudomodele;    
        JPanel pane1;
        JPanel sousgrille;
        JPanel boutonfinal;
        JPanel grilleposs;
        JButton [][] tabjb = new JButton[9][9];
        JButton [][][] tabjbposs = new JButton[9][9][9];
        CardLayout pilecarte = new CardLayout();
        JPanel [][]jp = new JPanel[9][9];
     
        public PanelVue1(Placement smodele){        
            int i,j,k;
            this.sudomodele = smodele;
            smodele.addObserver(this);
            this.setLayout(new BorderLayout());        
            pane1 = new JPanel();
            pane1.setLayout(new GridLayout(3,3,1,1));
            pane1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createBevelBorder(0,Color.LIGHT_GRAY,Color.GRAY),"Grille"));
            pane1.setPreferredSize(new Dimension(675,675));
            for (i=0;i<9;i++) {
                sousgrille = new JPanel();
                sousgrille.setLayout(new GridLayout(3, 3));
                sousgrille.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY));
                for (j=0;j<9;j++){                
                    jp[i][j]=new JPanel();
                    jp[i][j].setLayout(pilecarte);                
                    MouseListener buttonListener = new MouseAdapter(){
                        public void mouseClicked(MouseEvent ev) {
                            JButton obj = (JButton)ev.getSource();
                            String s = obj.getActionCommand();
                            int []coord=new int[2];
                            int int1,int2,int3;
                            if (obj.getActionCommand().startsWith("bfin")) {
                                int1 = Integer.parseInt(s.substring(4,5));
                                int2 = Integer.parseInt(s.substring(5,6));
                                convgrlcoord(int1,int2,coord);
                                if (SwingUtilities.isRightMouseButton(ev) || ev.isPopupTrigger()){
                                    if (sudomodele.getChiffrechoisi() != 0 ){
                                        sudomodele.clicp1fbd(coord);
                                    }                               
                                }
                                else if (SwingUtilities.isLeftMouseButton(ev) || ev.isPopupTrigger()){
                                    if (sudomodele.getChiffrechoisi() != 0 ){
                                        sudomodele.clicp1fbg(coord);
                                    }
                                }
                            }
                            else if (obj.getActionCommand().startsWith("bpos")){
                                int1 = Integer.parseInt(s.substring(4,5));
                                int2 = Integer.parseInt(s.substring(5,6));
                                int3 = Integer.parseInt(s.substring(6,7));
                                convgrlcoord(int1,int2,coord);
                                if (SwingUtilities.isRightMouseButton(ev) || ev.isPopupTrigger()){
                                    sudomodele.clicp1pbd(coord,int3);           
                                }
                                else if (SwingUtilities.isLeftMouseButton(ev) || ev.isPopupTrigger()){
                                    sudomodele.clicp1pbg(coord,int3);             
                                }
                            }
                        }
                    };
                    boutonfinal = new JPanel();
                    boutonfinal.setLayout(new BorderLayout());
                    tabjb[i][j] = new JButton();
                    tabjb[i][j].setFont(new Font("TimesRoman",1,23));
                    tabjb[i][j].setActionCommand("bfin"+Integer.toString(i)+Integer.toString(j));
                    tabjb[i][j].addMouseListener(buttonListener);
                    boutonfinal.add(tabjb[i][j],BorderLayout.CENTER);
                    grilleposs = new JPanel();
                    grilleposs.setLayout(new GridLayout(3,3));
                    grilleposs.setBorder(BorderFactory.createLineBorder(Color.GRAY));
                    for (k=0;k<9;k++){
                        tabjbposs[i][j][k] = new JButton();
                        tabjbposs[i][j][k].setBorder(null);
                        tabjbposs[i][j][k].setMargin(new Insets(0,0,0,0));
                        tabjbposs[i][j][k].setFont(new Font("TimesRoman",0,15));
                        tabjbposs[i][j][k].setActionCommand("bpos"+Integer.toString(i)+Integer.toString(j)+Integer.toString(k));
                        tabjbposs[i][j][k].addMouseListener(buttonListener);
                        grilleposs.add(tabjbposs[i][j][k]);
                    }                
                    jp[i][j].add(boutonfinal, "choixfinal");
                    jp[i][j].add(grilleposs, "grillepossibilites");                
                    sousgrille.add(jp[i][j]);                
                }
                pane1.add(sousgrille);
            }
            this.add(pane1, BorderLayout.CENTER);
        }

Discussions similaires

  1. problème avec CardLayout
    Par kaisser dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 25/02/2010, 11h09
  2. Problème de disposition avec un CardLayout
    Par Invité dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 25/07/2007, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 19h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 17h10

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