Salut
Mon probleme bah c'est repaint justement.J'ai créer une fenetre (avec plein de composant pas utile pour ma quastion).Dans cette fenerte j'ai un panel et dans ce panel j'affiche des images (qui sont choisie en fonction d'un entier dans un tableau 2 dimension (int terrain[][]))Ma question est commence rafraichir mon panel.J'utilise un thread (qui marche) mais c'est pas suffisant.
Enfin voici ma question: dans un mouseClicked j'aimerais que lorsque je clique sur une case de mon terrain que mon image change juste apres le clique.
pour etre plus clair voici un peu de code
2 eme question:J'initialise mon terrain et ensuite je valide et j'aimerais justement que mon terrain s'affiche directement dans mon panel sans que le thread ne soit mis en route.
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
 
//la je déclare toute mes variable
public Fenetre(){
//...
fenetreJ=new JFrame();
           fenetreJ.setSize(largeur,hauteur);
           fenetreJ.setLocationRelativeTo(null);
           fenetreP=new JFrame();
           fenetreP.setSize(550,220);
           fenetreP.setLocationRelativeTo(null);
//...
P24=new JPanel();//le panel concerné par ma question
//...
fenetreJ.add(P24,BorderLayout.CENTER);
//...
//tout les écouteurs necéssaires
}
 
//...
//la c'est lorsque je clique sur le bouton valider et qu'il m'initialise mon terrain
class ValiderListener implements ActionListener{
          public void actionPerformed(ActionEvent e){
 
             nbIntrus=Integer.parseInt(nbIntrusT.getText());
             nbArbre=Integer.parseInt(nbArbreT.getText());
             nbEau=Integer.parseInt(nbEauT.getText());
             nbMur=Integer.parseInt(nbMurT.getText());
             //+2 pour que le nombre entré par l'utilisateur soit la taille voulu
             nbColonnes=Integer.parseInt(nbColonnesT.getText())+2;
             if((nbArbre>15 && nbIntrus>5 || nbEau>10 && nbIntrus>5 || nbMur>10 && nbIntrus>5) && e.getSource().equals(valide) )
            	 fenetreGPbI.setVisible(true);
             else
                 {if(nbIntrus>5 && e.getSource().equals(valide))
                	 fenetrePbI.setVisible(true);
                 else
                     {if(nbArbre>15 || nbEau>10 || nbMur>10 && e.getSource().equals(valide))
                    	 fenetrePb.setVisible(true);
                     else
                        {if(nbColonnes>16)
                        	fenetreTTG.setVisible(true);
                         else
                        	 if(nbColonnes<7)
                        	    fenetreTTP.setVisible(true);
                             else
                                {if(e.getSource().equals(valide))
                                   {fenetreP.setVisible(false);
                                    styleA=Env.StandardArbre(ImageArbre);
                                    styleE=Env.StandardEau(ImageEau);
                                    styleM=Env.StandardMur(ImageMur);
                                    styleH=Env.StandardHerbe(ImageHerbe);
                                    styleAg=Env.StandardAgent(ImageAgent);
                                    styleI=Env.StandardIntrus(ImageIntrus);
                                    P27.removeAll();//efface tout les panels de la légende pour réafficher les nouvelles images 
                                    P28.removeAll();
                                    P29.removeAll();
                                    P30.removeAll();
                                    P31.removeAll();
                                   styleAV=Env.StandardArbre(ImageArbre);
               	      	           styleEV=Env.StandardEau(ImageEau);
               	      	           styleMV=Env.StandardMur(ImageMur);
               	      	           styleHV=Env.StandardHerbe(ImageHerbe);
               	      	           styleAgV=Env.StandardAgent(ImageAgent);
               	      	           styleIV=Env.StandardIntrus(ImageIntrus);
}
//c'est surement par là que je doit rajouter quelque chose
//...
public void mouseClicked(MouseEvent e) {
	    	int y,x=0,xx,yy,j;
		     if(e.BUTTON1_MASK==KeyEvent.BUTTON1_MASK)
 
	     x = e.getX();
             y = e.getY();
             terrain.terrain[1][1]=1;
             for(int i=0;i<nbColonnes;i++)
             {for(j=0;j<nbColonnes;j++)
             if(terrain.terrain[i][j]==1)
             {P24.add(new JLabel(styleA));}
             if(terrain.terrain[i][j]==2)
             {P24.add(new JLabel(styleE));}
             if(terrain.terrain[i][j]==3)
             {P24.add(new JLabel(styleM));}
             if(terrain.terrain[i][j]==0)
             {P24.add(new JLabel(styleH));}
             if(terrain.terrain[i][j]==5)
             {P24.add(new JLabel(styleAg));}
             if(terrain.terrain[i][j]==6)
             {P24.add(new JLabel(styleI));}
             }
             P24.repaint();
}
//la le repaint bah il me fait rien
//j'utilise la position de la souris mais comme vous l'aurez rremarqué c'est pas au point mais c'est pas ma priorité
Bon j'ai cherché un peu sur le net et apparement lorsque je fait repaint d'un panel il semblerait que sa ne rafraichie pas les composant à l'intérieur (et donc sa serais normale qu'il n'y a rien qui se passe).
Sinon j'aimerais des réponse pas trop difficile à apliqué car je ne suis pas un pro.Merci