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

avec Java Discussion :

Petit problème d'affichage


Sujet :

avec Java

  1. #21
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Tu as oublié de mettre une valeur (pour X comme pour Y) : un int a pour valeur par défaut 0. Donc tes fenêtre s'affichent, mais de taille 0x0 !

  2. #22
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    C'est bon ça marche, j'ai juste un dernier soucis, quand je clique sur intro ça ne m'affiche rien alors que quand je clique sur les règles elles s'affichent sans problèmes.
    J'ai remarqué que le bouton du menu aide reste sélectionné en bleu durant 2 secondes, c'est comme si l'image était invisible.

    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
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
     
    /**
     * @author Administrateur
     *
     * TODO Pour changer le modèle de ce commentaire de type généré, allez à :
     * Fenêtre - Préférences - Java - Style de code - Modèles de code
     */
    public class Menu extends JMenuBar implements ActionListener{
         static int X;
          static int Y;
        Interface map;
     
        JMenu m1;
        JMenu m2;
        JMenu m3;
        JMenu m4;
        JMenu m5;
        JMenuItem m12;
        JMenuItem m121;
        JMenuItem m122;
        JMenuItem m123;
     
        JMenuItem m222;
     
        JMenuItem m331;
        JMenuItem m332;
     
        JMenuItem m441;
        JMenuItem m442;
        JMenuItem m541;
        JMenuItem m542;
     
        public Menu(Interface map){
            super();
            this.map=map;
            m1 = new JMenu("Nouvelle grille");
            m2 = new JMenu("Solutionner Grille");
            m3 = new JMenu("Générer une grille");
            m4 = new JMenu("Fonctions supplémentaires");
            m5 = new JMenu("Aide");
     
            m121 = new JMenuItem("Niveau fort");
            m122 = new JMenuItem("Niveau moyen");
            m123 = new JMenuItem("Niveau faible");
            m12 = new JMenuItem("Sélectionner dans une liste");
            m121.addActionListener(this);
            m122.addActionListener(this);
            m123.addActionListener(this);
            m12.addActionListener(this);
     
            m222 = new JMenuItem("Vider la Grille");
            m222.addActionListener(this);
            m1.add(m222);
     
            m331 = new JMenuItem("Afficher la solution");
            m331.addActionListener(this);
            m2.add(m331);
            m332 = new JMenuItem("Cacher la solution");
            m332.addActionListener(this);
            m2.add(m332);
            m332.setEnabled(false);
     
     
            m441 = new JMenuItem("Copier grille dans le presse-papier");
            m441.addActionListener(this);
            m4.add(m441);
            m442 = new JMenuItem("Imprimer Grille+Solution");
            m442.addActionListener(this);
            m4.add(m442);
     
            m541 = new JMenuItem("Intro");
            m541.addActionListener(this);
            m5.add(m541);
            m542 = new JMenuItem("Afficher les regles");
            m542.addActionListener(this);
            m5.add(m542);
     
            m3.add(m121);
            m3.add(m122);
            m3.add(m123);
            m3.addSeparator();
            m3.add(m12);
     
            m5.add(m541);
            m5.add(m542);
     
            this.add(m1);
            this.add(m2);
            this.add(m3);
            this.add(m4);
            this.add(m5);
     
     
            //PERMET DE DESACTIVER CERTAINS ELEMENTS PAR DEFAUT
     
        }
     
          public void actionPerformed(ActionEvent evt){
     
                //PERMET D'eviter une ecriture de chiffre par erreur
                map.ecouteur.carre=null;
              if(evt.getSource()==m121){
                  //map.cherchernouvellesgrilles();
                  map.supanel.selection(3);
              }
              else if(evt.getSource()==m122){
                  //map.testersinouvellegrille();
                  map.supanel.selection(2);
              }
              else if(evt.getSource()==m123){
                  map.supanel.selection(1);
              }
     
     
              else if(evt.getSource()==m222){
                 map.supanel.vidergrille();
                 // map.supanel.cherchernouvellesgrilles();
              }
     
     
              else if(evt.getSource()==m331){
                  if(map.supanel.solutionnergrille()){
                    m331.setEnabled(false);
                    m332.setEnabled(true);
                  }
              }
              else if(evt.getSource()==m332){
                  map.supanel.cachersolution();
                    m331.setEnabled(true);
                    m332.setEnabled(false);
              }
              else if(evt.getSource()==m541){
                  new window( 500, 500, 1);
     
              }
              else if(evt.getSource()==m542){
                  new window(800, 500, 2);
     
              }
     
     
              //ECRITURE DANS PRESSE PAPIER
              else if(evt.getSource()==m441){
    if(map.getSudoku().getTableaufinal()!=null){
        ecriturepressepapier(map.getSudoku().getTableaufinal());
    }
    else{
        ecriturepressepapier(map.getSudoku().getGrille());
    }
              }
              //IMPRESSION
              else if(evt.getSource()==m442){
                 JFrame frame=new JFrame("Aperçu avant Impression");
                 frame.setSize(new Dimension(305,640));
                 Fond supanelreponse1=new Fond(map.map,map);
                 Fond supanelreponse2=new Fond(map.map,map);
                 supanelreponse1.impressionapartirdetableau(map.sudoku.grille);
                 if(map.supanel.solutionnergrille()){
                     System.out.println("GRILLE");
                     map.sudoku.afficher(map.sudoku.grille);
                     System.out.println("REPONSE");
                     map.sudoku.afficher(map.sudoku.tableaufinal);
                     supanelreponse2.impressionapartirdetableau(map.sudoku.tableaufinal);
                        //CONTENTPANEL
                        JPanel contentPanel = (JPanel)frame.getContentPane();
                        contentPanel.setLayout(null);
     
                        supanelreponse1.setBounds(0,0,300,300);
                     contentPanel.add(supanelreponse1);
     
                        supanelreponse2.setBounds(0,301,300,300);
                     contentPanel.add(supanelreponse2);
     
                     frame.setContentPane(contentPanel);
                     frame.setVisible(true);
     
     
     
                      MPanelPrinter mp=new MPanelPrinter(contentPanel);
                      mp.print();
                      map.supanel.cachersolution();
                      frame.dispose();
                 }
     
     
     
                            }
     
     
     
                map.requestFocus();
                           }
     
    public void ecriturepressepapier(int[][] tableau){
        String temp="";
     
        for(int i=0;i<tableau.length+2;i++){
            temp+="#";
        }
        temp+="\n";
     
        for(int i=0;i<tableau.length;i++){
            temp+="#";
            for(int e=0;e<tableau[i].length;e++){
                if(tableau[i][e]!=0){
                temp+=Integer.toString(tableau[i][e]);
                }
                else{
                    temp+=" ";
                }
                }
            temp+="#\n";
        }
     
        for(int i=0;i<tableau.length+2;i++){
            temp+="#";
        }
        map.getMpp().setClipboardContents(temp);
    }
    }

  3. #23
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Bah, oui, c'est dû à ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if( type == 1 ) {
            try {
                t.sleep(2000);
                thread = 1;
            }
            catch( java.lang.InterruptedException ex ) {
                JOptionPane.showMessageDialog(null, "erreur");
                }
            dispose();
     
        }
    Celui qui a écrit ça ne sait manifestement pas que sleep() s'applique toujours au thread courant, soit ici l'EDT (on ne peut pas faire attendre un autre thread). D'ailleurs, la méthode est statique. Il faudrait remplacer ça par 'pour faire ce que ça voudrait que ça fasse, c'est-à-dire afficher l'image pendant 2 secondes puis fermer la fenêtre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if ( type == 1 ) {
    	Timer timer = new Timer(2000, new ActionListener() {
     
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			((Timer)e.getSource()).stop();
                            dispose();
    		}
    	});
    	timer.start();
    }

  4. #24
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    D'accord, j'ai vu où c'était, maintenant ça marche. Merci

    On me demande : Vous devez créer une nouvelle fonctionnalité permettant d’annuler les placements dans la grille. Pour ce faire, vous devez implémenter la mécanique permettant de sauvegarder et annuler les placements et vous devez créer un menu Édition avec la fonctionnalité « Annuler Placement ».

    Puisque je n'ai encore jamais fait un menu édition, je suis un peu perdu il faut que je rajoute les fonctionnalités de correction dans cette classe, puisqu'on dirait qu'elle gère l'écriture dans la matrice? Ou que je fasse une nouvelle classe seulement pour l'édition?

    Je pense que je dois plutôt créer une nouvelle classe car j'ai compilé le programme et pour l'instant on ne peut pas remplir les cases de la grille. Pourtant je pensais qu'il y avait déjà une classe qui s'occupait de permettre le remplissage du tableau.

  5. #25
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 318
    Points
    8 318
    Billets dans le blog
    52
    Par défaut
    La gestion de de la fonction annuler demande un partern de conception très particulier...

    Qui ne semble pas être de ton niveau ! Cela ne s'ajoute pas en random dans une application !
    Il se trouve que j'ai déjà fait un billet à ce sujet ici :
    [Java][Design Pattern]Comment faire le undo/redo? Le principe de base !


    Mais globalement, il faudrait avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PlayCommand command = new PlayCommand(ecouteur.map.getSudoku(),ecouteur.carre, ecouteur.map, ecouteur.carre.getI(), ecouteur.carre.getE(),1);
    Processor.getInstance().execute(command);
    En lieu et place de :
    Avec la définition de la commande suivante :
    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
    package org.k.developpez.blog.undoredo;
    import javax.swing.ImageIcon;
     
     
     
    public class PlayCommand implements Command {
     
    	private Sudoku sudoku;
    	private int x, y;
    	private int played;
    	private int before;
    	private Carre carre;
    	private Interface map;
     
    	public PlayCommand(Sudoku sudoku,Carre carre,Interface map, int x, int y, int played) {
    		this.sudoku = sudoku;
    		this.x = x;
    		this.y = y;
    		this.played = played;
    		this.carre = carre;
    		this.map =map;
    	}
     
     
    	public void execute() {
    		before = this.sudoku.getGrille()[x][y];
    		this.sudoku.setGrille(x, y, played);
    		this.sudoku.afficher(this.sudoku.getGrille());
    		if(played != 0){
    			carre.setBg(map.getNbdispo(played - 1));
    		}else{
    			carre.setBg(new ImageIcon("images/nonselec.png").getImage());
    		}
    		carre.repaint();
    	}
     
    	public void undo() {
    		this.sudoku.setGrille(x, y, before);
    		this.sudoku.afficher(this.sudoku.getGrille());
    		if(before != 0){
    			carre.setBg(map.getNbdispo(before - 1));
    		}else{
    			carre.setBg(new ImageIcon("images/nonselec.png").getImage());
    		}
    		carre.repaint();
    	}
     
    	public boolean canBeUnDone() {
    		return true;
    	}
     
    }
    Sachant qu'un undo est déclenchable par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Processor.getInstance().undo();
    Mais, il faut bien comprendre que la mise à jour de l'affichage n'est pas le travail normal de d'un commande. La commande ne devrait pas connaitre Carre carre,Interface mapNote : le code compile avec la classe Processor et l'interface Command correspondant à mon billet de blog.

    Si tu rends ça pour te faire noté, autant dire directement à ton professeur qui tu as utilisé du code externe. Il s'en rendra compte tout seul de toute façon.

    Cordialement,
    Patrick Kolodziejczyk.

  6. #26
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Merci pour toutes ces infos utiles.
    De toutes manière on me demande de faire quelque chose qui ne correspond pas au niveau des cours que l'on m'a donné, donc obligatoirement je suis obligé de trouver la solution ailleurs. De toutes façon ce cours est une vraie catastrophe, mon objectif est de rendre ce dernier exercice pour le terminer au plus vite.

    Le ecouteur.chiffre(1); est sensé être dans la classe menu, non?

  7. #27
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 318
    Points
    8 318
    Billets dans le blog
    52
    Par défaut
    De mémoire oui,
    Mais c'est ce que tu as actuellement et qu'il faut remplacer. C'est l'endroit où tu as l'écouter pour les touches.
    Il faut changer les autres déclencheurs aussi...

    Cordialement,
    Patrick Kolodziejczyk.

  8. #28
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    D'accord, j'ai regardé, mais je n'arrive pas à le trouver.
    Pourrait il être dans une autre classe?
    Désolé d’embêter avec une chose aussi simple, mais vu que j'utilise des notions que je ne maîtrise pas encore, j'ai un peu peur de faire plus de dégâts qu'autre chose.
    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
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
     
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
     
    /**
     * @author Administrateur
     *
     * TODO Pour changer le modèle de ce commentaire de type généré, allez à :
     * Fenêtre - Préférences - Java - Style de code - Modèles de code
     */
    public class Menu extends JMenuBar implements ActionListener{
    	 static int X;
    	  static int Y;
        Interface map;
     
    	JMenu m1;
    	JMenu m2;
    	JMenu m3;
    	JMenu m4;
    	JMenu m5;
        JMenuItem m12;
        JMenuItem m121;
        JMenuItem m122;
        JMenuItem m123;
     
        JMenuItem m222;
     
        JMenuItem m331;
        JMenuItem m332;
     
        JMenuItem m441;
        JMenuItem m442;
        JMenuItem m541;
        JMenuItem m542;
     
    	public Menu(Interface map){
            super();
            this.map=map;
    		m1 = new JMenu("Nouvelle grille");
    		m2 = new JMenu("Solutionner Grille");
    		m3 = new JMenu("Générer une grille");
    		m4 = new JMenu("Fonctions supplémentaires");
    		m5 = new JMenu("Aide");
     
            m121 = new JMenuItem("Niveau fort");
            m122 = new JMenuItem("Niveau moyen");
            m123 = new JMenuItem("Niveau faible");
            m12 = new JMenuItem("Sélectionner dans une liste");
            m121.addActionListener(this);
            m122.addActionListener(this);
            m123.addActionListener(this);
            m12.addActionListener(this);
     
            m222 = new JMenuItem("Vider la Grille");
            m222.addActionListener(this);
            m1.add(m222);
     
            m331 = new JMenuItem("Afficher la solution");
            m331.addActionListener(this);
            m2.add(m331);
            m332 = new JMenuItem("Cacher la solution");
            m332.addActionListener(this);
            m2.add(m332);
            m332.setEnabled(false);
     
     
            m441 = new JMenuItem("Copier grille dans le presse-papier");
            m441.addActionListener(this);
            m4.add(m441);
            m442 = new JMenuItem("Imprimer Grille+Solution");
            m442.addActionListener(this);
            m4.add(m442);
     
            m541 = new JMenuItem("Intro");
            m541.addActionListener(this);
            m5.add(m541);
            m542 = new JMenuItem("Afficher les regles");
            m542.addActionListener(this);
            m5.add(m542);
     
            m3.add(m121);
            m3.add(m122);
            m3.add(m123);
            m3.addSeparator();
            m3.add(m12);
     
            m5.add(m541);
            m5.add(m542);
     
            this.add(m1);
            this.add(m2);
            this.add(m3);
            this.add(m4);
            this.add(m5);
     
     
            //PERMET DE DESACTIVER CERTAINS ELEMENTS PAR DEFAUT
     
    	}
     
    	  public void actionPerformed(ActionEvent evt){
     
    			//PERMET D'eviter une ecriture de chiffre par erreur
    			map.ecouteur.carre=null;
    		  if(evt.getSource()==m121){
    			  //map.cherchernouvellesgrilles();
    			  map.supanel.selection(3);
    		  }
    		  else if(evt.getSource()==m122){
    			  //map.testersinouvellegrille();
    			  map.supanel.selection(2);
    		  }
    		  else if(evt.getSource()==m123){
    			  map.supanel.selection(1);
    		  }
     
     
    		  else if(evt.getSource()==m222){
    			 map.supanel.vidergrille();
    			 // map.supanel.cherchernouvellesgrilles();
    		  }
     
     
    		  else if(evt.getSource()==m331){
    			  if(map.supanel.solutionnergrille()){
    		        m331.setEnabled(false);
    		        m332.setEnabled(true);
    			  }
    		  }
    		  else if(evt.getSource()==m332){
    			  map.supanel.cachersolution();
    		        m331.setEnabled(true);
    		        m332.setEnabled(false);
    		  }
              else if(evt.getSource()==m541){
            	  new window( 500, 500, 1);
     
    		  }
    		  else if(evt.getSource()==m542){
    			  new window(800, 500, 2);
     
    		  }
     
     
    		  //ECRITURE DANS PRESSE PAPIER
    		  else if(evt.getSource()==m441){
    if(map.getSudoku().getTableaufinal()!=null){
    	ecriturepressepapier(map.getSudoku().getTableaufinal());
    }
    else{
    	ecriturepressepapier(map.getSudoku().getGrille());
    }
    		  }
    		  //IMPRESSION
    		  else if(evt.getSource()==m442){
    			 JFrame frame=new JFrame("Aperçu avant Impression");
    			 frame.setSize(new Dimension(305,640));
    			 Fond supanelreponse1=new Fond(map.map,map);
    			 Fond supanelreponse2=new Fond(map.map,map);
    			 supanelreponse1.impressionapartirdetableau(map.sudoku.grille);
    			 if(map.supanel.solutionnergrille()){
    				 System.out.println("GRILLE");
    				 map.sudoku.afficher(map.sudoku.grille);
    				 System.out.println("REPONSE");
    				 map.sudoku.afficher(map.sudoku.tableaufinal);
    				 supanelreponse2.impressionapartirdetableau(map.sudoku.tableaufinal);
    					//CONTENTPANEL
    					JPanel contentPanel = (JPanel)frame.getContentPane();
    					contentPanel.setLayout(null);
     
    					supanelreponse1.setBounds(0,0,300,300);
    			 	contentPanel.add(supanelreponse1);
     
    					supanelreponse2.setBounds(0,301,300,300);
    			 	contentPanel.add(supanelreponse2);
     
    			 	frame.setContentPane(contentPanel);
    				 frame.setVisible(true);
     
     
     
    				  MPanelPrinter mp=new MPanelPrinter(contentPanel);
    				  mp.print();
    				  map.supanel.cachersolution();
    				  frame.dispose();
    			 }
     
     
     
    			  		  }
     
     
     
    			map.requestFocus();
    	               	}
     
    public void ecriturepressepapier(int[][] tableau){
    	String temp="";
     
    	for(int i=0;i<tableau.length+2;i++){
    		temp+="#";
    	}
    	temp+="\n";
     
    	for(int i=0;i<tableau.length;i++){
    		temp+="#";
    		for(int e=0;e<tableau[i].length;e++){
    			if(tableau[i][e]!=0){
    			temp+=Integer.toString(tableau[i][e]);
    			}
    			else{
    				temp+=" ";
    			}
    			}
    		temp+="#\n";
    	}
     
    	for(int i=0;i<tableau.length+2;i++){
    		temp+="#";
    	}
    	map.getMpp().setClipboardContents(temp);
    }
    }

  9. #29
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Autre petite question est-ce normale que l'on ne puisse rien insérer dans les cases?

  10. #30
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 318
    Points
    8 318
    Billets dans le blog
    52
    Par défaut
    Non. Perso j'ai testé. Juste en remplaçant le comportement pour la touche 1. Cela fonction, j'ai aussi ajouté un cas pour pouvoir annuler... qui marche aussi.

    Cordialement,
    Patrick Kolodziejczyk.

  11. #31
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    J'ai effectué une recherche et la seule référence à écouteur est faite ici "map.ecouteur.carre=null;" mais je ne pense pas que ce soit ça.


    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
     public void actionPerformed(ActionEvent evt){
     
    			//PERMET D'eviter une ecriture de chiffre par erreur
    			map.ecouteur.carre=null;
    		  if(evt.getSource()==m121){
    			  //map.cherchernouvellesgrilles();
    			  map.supanel.selection(3);
    		  }
    		  else if(evt.getSource()==m122){
    			  //map.testersinouvellegrille();
    			  map.supanel.selection(2);
    		  }
    		  else if(evt.getSource()==m123){
    			  map.supanel.selection(1);
    		  }
     
     
    		  else if(evt.getSource()==m222){
    			 map.supanel.vidergrille();
    			 // map.supanel.cherchernouvellesgrilles();
    		  }
     
     
    		  else if(evt.getSource()==m331){
    			  if(map.supanel.solutionnergrille()){
    		        m331.setEnabled(false);
    		        m332.setEnabled(true);
    			  }
    		  }
    		  else if(evt.getSource()==m332){
    			  map.supanel.cachersolution();
    		        m331.setEnabled(true);
    		        m332.setEnabled(false);
    		  }
              else if(evt.getSource()==m541){
            	  new window( 500, 500, 1);
     
    		  }
    		  else if(evt.getSource()==m542){
    			  new window(800, 500, 2);
     
    		  }

  12. #32
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Désolé, tu as du poster quand j’étais entrain d'écrire du coup j'avais pas vu ta réponse
    à mon avis je regardais pas la bonne classe, car j'arrivais pas du tout à me repérer.

  13. #33
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 318
    Points
    8 318
    Billets dans le blog
    52
    Par défaut
    Regarde ta classe Interface (le type qui a nommé cette classe devrait être pendu....) ligne 100 environ....

    Cordialement,
    Patrick Kolodziejczyk.

  14. #34
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Ah oui d'accord, je cherchais pas du tout dans la bonne classe. Merci

    Je suis allé voir pourquoi tu avais mit implement et non extend et de ce que j'ai compris c'est pareil sauf que implement fait référence à une interface. Cela soulève une autre question, dois-je la créer l'interface ou elle existe déjà dans le programme que l'on m'a donné. Car au début je pensait que la classe interface qu'ils ont si bien nommés était celle qu'il fallait que je mette dans mon implement.

  15. #35
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 318
    Points
    8 318
    Billets dans le blog
    52
    Par défaut
    En premier lieu ta classe Interface est problématique, car elle est nommé comme cela probablement pour faire une IHM. Ce qui n'est pas bien c'est que interface est un mot réservé du langage qui signifie autre chose.

    Une interface java est un contrat que s'engage à respecter une classe.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public interface Vendeur{
    /*
     *Encaisse un montant et retourne la monaie
    */
    public int encaisser(int montant);
     
    }
    Tu pourrai avoir deux implémentations totalement différent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public classe Voleur {
    public int encaisser(int montant){
    return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public classe Commercant{
    public int encaisser(int montant){
    if(montant >10){
    return montant-10;
    }
    return 0;
    }
    L'interface que doit satisfaire la commande que je propose c'est Command et celle-ci se trouve dans le zip associé au billet de blog que j'ai donnée plus haut. Il te faut aussi la classe processeur de ce même zip/projet.

    Cordialement,
    Patrick Kolodziejczyk.

  16. #36
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Oui en effet tout est dans le zip bon je vais m'occuper de tout ça. Grand merci.
    Ps: J'ai eu en effet quelques confusion à cause du nom des classes, je sais pas ce qui leur est passé par la tête quand ils ont fait ce programme.

    Par contre quand j'ai créé la classe Command Eclipse me souligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class Command {
        public void execute();
        public void undo();
        public boolean canBeUnDone();
    }
    En me disant ceci :
    This method requires a body instead of a semicolon

  17. #37
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 318
    Points
    8 318
    Billets dans le blog
    52
    Par défaut
    Si tu avais regardé le code qui se trouve dans le zip tu aurai vue que Command est une interface...
    Une interface est un contrat et ne nécessite pas d'implémentation contrairement à une classe.(Sauf si celle-ci est abstraite)

    D'où le fait qu'Eclipse te retourne une erreur de compilation.

    Pour le coup, il va falloir que tu révise la base de la programmation objet. Car, c'est une base dans pratiquement tout les langages moderne qui font de l'objet.


    Cordialement,
    Patrick Kolodziejczyk.

  18. #38
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Je suis parfaitement d'accord sur le fait que Command est un interface et je n'ai pas fais d’implémentation dans mon interface, j'ai une implémentation seulement dans la classe PlayCommand comme celle que tu as écrit dans la page précédente.

    J'ai essayé d'enlever l’implémentation de l'interface dans ma classe et ça change rien.

  19. #39
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 318
    Points
    8 318
    Billets dans le blog
    52
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public interface Command {
    	public void execute();
    	public void undo();
    	public boolean canBeUnDone();
    }
    Sérieusement va lire un tutoriel de base sur Java.

  20. #40
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Quel imbécile je fais, depuis tout à l'heure tu essais de me le faire comprendre, j'avais pas vu qu j'avais mis public class pour l'interface. Désolé de t'avoir embêté pour ça, mais je commence à être un peu fatigué.
    Merci pour tout

    J'ai plus de message d'erreur mais je n'arrive toujours pas à insérer quoi que ce soit dans les cases de la grille. Quand tu as essayé ça fonctionnait?

    voici le code :

    classe interface :
    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
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    import java.awt.*;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.awt.image.BufferedImage;
     
    import javax.swing.*;
     
    public class Interface extends JFrame {
        // Variables declaration
        JPanel contentPanel;
        Sudoku sudoku;
        Fond supanel;
     
        // Ecouteur et Presse-Papier
        Ecouteur ecouteur;
        ModifPressPap mpp;
     
        FileLogger file;
        Menu menu;
     
        // Tableaux pour les chiffres
        Image[] nbplaces = new Image[9];
        Image[] nbdispo = new Image[9];
     
        // IMAGE JPANEL
        Image map = new ImageIcon("http://www.developpez.net/forums/images/sudoku.png").getImage();
        Image digi = new ImageIcon("http://www.developpez.net/forums/images/digits.gif").getImage();
        BufferedImage mapmodifiable = toBufferedImage(map);
        BufferedImage digits = toBufferedImage(digi);
        int carre = 30;
     
        public Interface() {
            super();
            this.setVisible(false);
            file = new FileLogger(this, "sudoku.txt");
            file.repertoire();
            // LANCEMENT DE SUDOKU ET MISE EN DAEMON
            this.sudoku = new Sudoku(9);
            sudoku.setPriority(Thread.MAX_PRIORITY);
            sudoku.start();
            initializeComponent();
            creationdigits();
            this.setVisible(true);
        }
     
        public void creationdigits() {
     
            int indice = 0;
            for (int i = 0; i <= digits.getHeight() - (carre - 1); i += (carre - 1)) {
                nbplaces[indice] = digits.getSubimage(29, i, carre - 1, carre - 1);
                nbdispo[indice] = digits.getSubimage(0, i, carre - 1, carre - 1);
                indice++;
            }
     
        }
     
        private void initializeComponent() {
            // CONTENTPANEL
            contentPanel = (JPanel) this.getContentPane();
            contentPanel.setLayout(new GridBagLayout());
     
            // SUDOKUPANEL
            supanel = new Fond(map, this);
     
            // MENU
            menu = new Menu(this);
            this.setJMenuBar(menu);
     
            // ECOUTEUR ET PRESSEPAPIER
            ecouteur = new Ecouteur(this);
            mpp = new ModifPressPap();
     
            GridBagConstraints c = new GridBagConstraints();
     
            c.gridx = 0;
            c.gridy = 1;
            c.gridwidth = 1;
            c.gridheight = 1;
            c.weightx = 100;
            c.weighty = 100;
            c.fill = GridBagConstraints.NONE;
            c.ipadx = 0;
            c.ipady = 0;
            contentPanel.add(supanel, c);
     
            this.setFocusable(true);
            this.addKeyListener(new KeyAdapter() {
                public void keyPressed(KeyEvent e) {
                    int caract = e.getKeyCode();
                    switch (caract) {
                    case KeyEvent.VK_1:
                        PlayCommand command = new PlayCommand(ecouteur.map
                                .getSudoku(), ecouteur.carre, ecouteur.map,
                                ecouteur.carre.getI(), ecouteur.carre.getE(), 1);
                        Processor.getInstance().execute(command);
                        break;
                    case KeyEvent.VK_2:
                        PlayCommand command2 = new PlayCommand(ecouteur.map
                                .getSudoku(), ecouteur.carre, ecouteur.map,
                                ecouteur.carre.getI(), ecouteur.carre.getE(), 2);
                        Processor.getInstance().execute(command2);
                        break;
                    case KeyEvent.VK_3:
                        PlayCommand command3 = new PlayCommand(ecouteur.map
                                .getSudoku(), ecouteur.carre, ecouteur.map,
                                ecouteur.carre.getI(), ecouteur.carre.getE(), 3);
                        Processor.getInstance().execute(command3);
                        break;
                    case KeyEvent.VK_4:
                        PlayCommand command4 = new PlayCommand(ecouteur.map
                                .getSudoku(), ecouteur.carre, ecouteur.map,
                                ecouteur.carre.getI(), ecouteur.carre.getE(), 4);
                        Processor.getInstance().execute(command4);
                        break;
                    case KeyEvent.VK_5:
                        PlayCommand command5 = new PlayCommand(ecouteur.map
                                .getSudoku(), ecouteur.carre, ecouteur.map,
                                ecouteur.carre.getI(), ecouteur.carre.getE(), 5);
                        Processor.getInstance().execute(command5);
                        break;
                    case KeyEvent.VK_6:
                        PlayCommand command6 = new PlayCommand(ecouteur.map
                                .getSudoku(), ecouteur.carre, ecouteur.map,
                                ecouteur.carre.getI(), ecouteur.carre.getE(), 6);
                        Processor.getInstance().execute(command6);
                        break;
                    case KeyEvent.VK_7:
                        PlayCommand command7 = new PlayCommand(ecouteur.map
                                .getSudoku(), ecouteur.carre, ecouteur.map,
                                ecouteur.carre.getI(), ecouteur.carre.getE(), 7);
                        Processor.getInstance().execute(command7);
                        break;
                    case KeyEvent.VK_8:
                        PlayCommand command8 = new PlayCommand(ecouteur.map
                                .getSudoku(), ecouteur.carre, ecouteur.map,
                                ecouteur.carre.getI(), ecouteur.carre.getE(), 8);
                        Processor.getInstance().execute(command8);
                        break;
                    case KeyEvent.VK_9:
                        PlayCommand command9 = new PlayCommand(ecouteur.map
                                .getSudoku(), ecouteur.carre, ecouteur.map,
                                ecouteur.carre.getI(), ecouteur.carre.getE(), 9);
                        Processor.getInstance().execute(command9);
                        break;
                    case KeyEvent.VK_DELETE:
                        ecouteur.chiffre(0);
                        break;
                    }
                }
            });
            this.setContentPane(contentPanel);
            this.setLocation(new Point(350, 350));
            this.setTitle("Sudoku");
            this.setResizable(false);
            this.setSize(new Dimension(540, 405));
        }
     
        public BufferedImage toBufferedImage(Image image) {
            /** On test si l'image n'est pas déja une instance de BufferedImage */
            if (image instanceof BufferedImage) {
                /** cool, rien à faire */
                return ((BufferedImage) image);
            } else {
                /** On s'assure que l'image est complètement chargée */
                image = new ImageIcon(image).getImage();
                /** On crée la nouvelle image */
                BufferedImage bufferedImage = new BufferedImage(
                        image.getWidth(null), image.getHeight(null),
                        BufferedImage.TYPE_INT_RGB);
                Graphics g = bufferedImage.createGraphics();
                g.drawImage(image, 0, 0, null);
                g.dispose();
                return (bufferedImage);
            }
        }
     
        public static void main(String[] args) {
            window fenetreintro = new window(440, 400, 1);
            // INTERFACE GRAPHIQUE
            Interface graphique = new Interface();
     
            graphique.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent evt) {
                    System.exit(0);
                }
            });
        }
     
        public Fond getSupanel() {
            return supanel;
        }
     
        public Image getNbdispo(int i) {
            return nbdispo[i];
        }
     
        public Image getNbplaces(int i) {
            return nbplaces[i];
        }
     
        public Sudoku getSudoku() {
            return sudoku;
        }
     
        public void setSudoku(Sudoku sudoku) {
            this.sudoku = sudoku;
        }
     
        public ModifPressPap getMpp() {
            return mpp;
        }
     
        /**
         * @return Renvoie contentPanel.
         */
        public JPanel getContentPanel() {
            return contentPanel;
        }
     
        /**
         * @param contentPanel
         *            contentPanel à définir.
         */
        public void setContentPanel(JPanel contentPanel) {
            this.contentPanel = contentPanel;
        }
     
    }
    Voici la classe menu avec le menu édition qui pour l'instant ne fait rien.

    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
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
     
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
     
    /**
     * @author Administrateur
     *
     *         TODO Pour changer le modèle de ce commentaire de type généré, allez à
     *         : Fenêtre - Préférences - Java - Style de code - Modèles de code
     */
    public class Menu extends JMenuBar implements ActionListener {
        static int X;
        static int Y;
        Interface map;
     
        JMenu m1;
        JMenu m2;
        JMenu m3;
        JMenu m4;
        JMenu m5;
        JMenu m6;
        JMenuItem m12;
        JMenuItem m121;
        JMenuItem m122;
        JMenuItem m123;
     
        JMenuItem m222;
     
        JMenuItem m331;
        JMenuItem m332;
     
        JMenuItem m441;
        JMenuItem m442;
        JMenuItem m541;
        JMenuItem m542;
        JMenuItem m543;
     
        public Menu(Interface map) {
            super();
            this.map = map;
            m1 = new JMenu("Nouvelle grille");
            m2 = new JMenu("Solutionner Grille");
            m3 = new JMenu("Générer une grille");
            m4 = new JMenu("Fonctions supplémentaires");
            m5 = new JMenu("Aide");
            m6 = new JMenu("Edition");
     
            m121 = new JMenuItem("Niveau fort");
            m122 = new JMenuItem("Niveau moyen");
            m123 = new JMenuItem("Niveau faible");
            m12 = new JMenuItem("Sélectionner dans une liste");
            m121.addActionListener(this);
            m122.addActionListener(this);
            m123.addActionListener(this);
            m12.addActionListener(this);
     
            m222 = new JMenuItem("Vider la Grille");
            m222.addActionListener(this);
            m1.add(m222);
     
            m331 = new JMenuItem("Afficher la solution");
            m331.addActionListener(this);
            m2.add(m331);
            m332 = new JMenuItem("Cacher la solution");
            m332.addActionListener(this);
            m2.add(m332);
            m332.setEnabled(false);
     
            m441 = new JMenuItem("Copier grille dans le presse-papier");
            m441.addActionListener(this);
            m4.add(m441);
            m442 = new JMenuItem("Imprimer Grille+Solution");
            m442.addActionListener(this);
            m4.add(m442);
     
            m541 = new JMenuItem("Intro");
            m541.addActionListener(this);
            m5.add(m541);
            m542 = new JMenuItem("Afficher les regles");
            m542.addActionListener(this);
            m5.add(m542);
     
            m543 = new JMenuItem("Supprimer");
            m541.addActionListener(this);
            m5.add(m541);
     
            m3.add(m121);
            m3.add(m122);
            m3.add(m123);
            m3.addSeparator();
            m3.add(m12);
     
            m5.add(m541);
            m5.add(m542);
            m6.add(m543);
     
            this.add(m1);
            this.add(m2);
            this.add(m3);
            this.add(m4);
            this.add(m5);
            this.add(m6);
     
            // PERMET DE DESACTIVER CERTAINS ELEMENTS PAR DEFAUT
     
        }
     
        public void actionPerformed(ActionEvent evt) {
     
            // PERMET D'eviter une ecriture de chiffre par erreur
            map.ecouteur.carre = null;
            if (evt.getSource() == m121) {
                // map.cherchernouvellesgrilles();
                map.supanel.selection(3);
            } else if (evt.getSource() == m122) {
                // map.testersinouvellegrille();
                map.supanel.selection(2);
            } else if (evt.getSource() == m123) {
                map.supanel.selection(1);
            }
     
            else if (evt.getSource() == m222) {
                map.supanel.vidergrille();
                // map.supanel.cherchernouvellesgrilles();
            }
     
            else if (evt.getSource() == m331) {
                if (map.supanel.solutionnergrille()) {
                    m331.setEnabled(false);
                    m332.setEnabled(true);
                }
            } else if (evt.getSource() == m332) {
                map.supanel.cachersolution();
                m331.setEnabled(true);
                m332.setEnabled(false);
            } else if (evt.getSource() == m541) {
                new window(500, 500, 1);
     
            } else if (evt.getSource() == m542) {
                new window(800, 500, 2);
     
            } else if (evt.getSource() == m542) {
     
            }
     
            // ECRITURE DANS PRESSE PAPIER
            else if (evt.getSource() == m441) {
                if (map.getSudoku().getTableaufinal() != null) {
                    ecriturepressepapier(map.getSudoku().getTableaufinal());
                } else {
                    ecriturepressepapier(map.getSudoku().getGrille());
                }
            }
            // IMPRESSION
            else if (evt.getSource() == m442) {
                JFrame frame = new JFrame("Aperçu avant Impression");
                frame.setSize(new Dimension(305, 640));
                Fond supanelreponse1 = new Fond(map.map, map);
                Fond supanelreponse2 = new Fond(map.map, map);
                supanelreponse1.impressionapartirdetableau(map.sudoku.grille);
                if (map.supanel.solutionnergrille()) {
                    System.out.println("GRILLE");
                    map.sudoku.afficher(map.sudoku.grille);
                    System.out.println("REPONSE");
                    map.sudoku.afficher(map.sudoku.tableaufinal);
                    supanelreponse2
                            .impressionapartirdetableau(map.sudoku.tableaufinal);
                    // CONTENTPANEL
                    JPanel contentPanel = (JPanel) frame.getContentPane();
                    contentPanel.setLayout(null);
     
                    supanelreponse1.setBounds(0, 0, 300, 300);
                    contentPanel.add(supanelreponse1);
     
                    supanelreponse2.setBounds(0, 301, 300, 300);
                    contentPanel.add(supanelreponse2);
     
                    frame.setContentPane(contentPanel);
                    frame.setVisible(true);
     
                    MPanelPrinter mp = new MPanelPrinter(contentPanel);
                    mp.print();
                    map.supanel.cachersolution();
                    frame.dispose();
                }
     
            }
     
            map.requestFocus();
        }
     
        public void ecriturepressepapier(int[][] tableau) {
            String temp = "";
     
            for (int i = 0; i < tableau.length + 2; i++) {
                temp += "#";
            }
            temp += "\n";
     
            for (int i = 0; i < tableau.length; i++) {
                temp += "#";
                for (int e = 0; e < tableau[i].length; e++) {
                    if (tableau[i][e] != 0) {
                        temp += Integer.toString(tableau[i][e]);
                    } else {
                        temp += " ";
                    }
                }
                temp += "#\n";
            }
     
            for (int i = 0; i < tableau.length + 2; i++) {
                temp += "#";
            }
            map.getMpp().setClipboardContents(temp);
        }
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. petit problème d'affichage
    Par Agrapheuse dans le forum Applets
    Réponses: 1
    Dernier message: 19/04/2008, 16h52
  2. Petit Problème d'Affichage
    Par I_Will_Be_back dans le forum C
    Réponses: 8
    Dernier message: 10/11/2007, 15h26
  3. [AJAX] Affichage en Ajax
    Par RichardP dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/05/2007, 16h02
  4. petit problème d'affichage sur un datagridview
    Par boss_gama dans le forum C#
    Réponses: 5
    Dernier message: 01/05/2007, 21h42
  5. petit problème d'affichage
    Par soria_t dans le forum C
    Réponses: 18
    Dernier message: 20/03/2007, 14h40

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