Bonjour,

Je suis en train de faire un exercice sur un jeu de Sudoku, mais j'ai un petit souci d'affichage.
J'ai vu qu'un sujet identique a déjà été traité sur ce forum; mais malheureusement aucune solution y est donnée.

J'ai fait les modifications pour afficher un menu aide, et ça fonctionne jusqu'au moment où il faut charger les règles qui sont sur un fichier jpg.
Il semblerait que le programme ne charge pas le fichier Lesregles. Je ne sais pas pourquoi ça ne l'affiche pas.

Voici la première classe :
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
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
public class window extends JWindow
{
  ImageIcon imIntro = new ImageIcon("images\\Lintro.jpg");
  ImageIcon imRegles = new ImageIcon("images\\Lesregles.jpg");
  static Thread t = new Thread();
  static int thread = 0;
  static JButton bouton;
  static int X;
  static int Y;
  /* Parametres du constructeur :
     X, Y: taille de la fenetre :)
     type: 1-> Intro, 2->regles */
  public window( int X, int Y, int type ) {
 
    super();
    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
    setSize(X,Y);
    setLocation( (dim.width - X)/2 , (dim.height - Y)/2);
    setVisible(true);
    Container fen = getContentPane();
 
    if (type == 1 ) bouton = new JButton(imIntro);
    else            bouton = new JButton(imRegles);
    bouton.setPreferredSize(new Dimension(X, Y) );
    fen.add( bouton);
    bouton.setVisible( true );
 
    show();
   /* Si c'est une fenetre d'intro,
      on ne l'affiche que 2 secondes */
    if( type == 1 ) {
        try {
            t.sleep(2000);
            thread = 1;
        }
        catch( java.lang.InterruptedException ex ) {
            JOptionPane.showMessageDialog(null, "erreur");
            }
        dispose();
 
    }
    /* Si c'est une fenetre de regles,
       on ne la ferme que quand l'utilisateur clique */
    else {
        bouton.addActionListener( new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                     dispose();
                }
        });
    }
  }
}
et voici la seconde:
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
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
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{
    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);
          }
 
 
          //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);
  }
}
Merci d'avance pour vos conseils.