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.
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.
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 //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);
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 !
Partager