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.
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).
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é
Sinon j'aimerais des réponse pas trop difficile à apliqué car je ne suis pas un pro.Merci
Partager