Problème d'affiche d'image
Bonjour,
Je suis actuellement en train de coder une petite application qui propose des exercices d'anglais. Après avoir répondu dans des JtextField, une boucle vérifie les réponses et affiche une image en fonction de sa validation.
Mais un problème surprenant intervient : il faut que je réduise la fenêtre et l'ouvre à nouveau pour que les images s'affichent...
Je vous transmets la partie du code en question pour ne pas surcharger mon poste, mais je peux le transmettre en entier si nécessaire.
Code:
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
| //Vérification des réponses
JButton btnNewButton = new JButton("Correction");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String solutions[];
JLabel images[] = new JLabel[champs.length];
int index_img = 0;
boolean correct = false;
for(int i=0; i<nbr_answers; i++){ //boucle sur les champs
correct = false;
solutions = ex1.getAnswers()[i].split(";");//solutions possibles séparées par un ;
int j=0;
while(!correct && j<solutions.length){ //boucle sur les possibilités de réponses
if(champs[i].getText().equals(solutions[j])){
correct = true;
}
j+=1;
}
//ajout des images
if(correct){
BufferedImage myPicture=null;
try {
myPicture = ImageIO.read(new File("C:/Users/FLORIAN/workspace/english_project/images/img_valid.png"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JLabel picLabel = new JLabel(new ImageIcon(myPicture));
//position de l'image
int img_x = (int) champs[i].getX() + 100;
int img_y = (int) champs[i].getY() - 2;
picLabel.setBounds(img_x, img_y, 22, 22);
//ajout dans le tableau d'images
images[index_img] = picLabel;
index_img += 1;
//contentPane.add(picLabel);
System.out.println("correct");
}else{
BufferedImage myPicture=null;
try {
myPicture = ImageIO.read(new File("C:/Users/FLORIAN/workspace/english_project/images/img_wrong.png"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JLabel picLabel = new JLabel(new ImageIcon(myPicture));
//position de l'image
int img_x = champs[i].getX() + 100 ;
int img_y = champs[i].getY() - 2;
picLabel.setBounds(img_x, img_y, 22, 22);
//ajout dans le tableau d'images
images[index_img] = picLabel;
index_img += 1;
//contentPane.add(picLabel);
System.out.println("wrong");
}
}
//ajout des images
for(int i=0; i<nbr_answers; i++ ){
contentPane.add(images[i]);
}
}
});
btnNewButton.setBounds(296, 473, 108, 42);
contentPane.add(btnNewButton); |
Ce code utilise un tableau de JLabel pour mettre les images a la fin, j'avais essayé avant de les mettre une par une (dans la boucle for), mais j'obtiens le même résultat.
Le tableau champs est un tableau de JTextField, qui contient les champs dans les quels l'utilisateur doit répondre.
N'hésitez pas à me demander plus de précisions si nécessaire :)
Merci d'avance pour votre aide !