Bonjour je débute en JAVA grace à ce site et à divers support. Ayant d'abord programmé en C je me trouve un peu dérouté par l'approche de l'orienté objet et je comprend que mon probleme vient certainement d'une mauvaise compréhension du fonctionnement de la méthode paintComponent ou quelque chose du genre mais voilà mon problème est que :
je veux assigner la tâche dans une méthode ActionPerformed() de redessiner l'intérieur d'un JPanel avec une image donnée jai donc créé un setter vers une image déclaré dans le constructeur par défault puis dans mon paintComponent je fais mon graphics.drawImage avec l'image par défault.
Et lorsque j'effectus un "jpanel.setImage(nouvelleImage)" mon image ne change pas dans mon jpanel alors que je pensais que paincomponent serait rappeler automatiquement.
J'ai alors essayer de rajouter la méthode repaint() mais que néni. Votre lumière est la bienvenue sur mon humble demeure...
j'ai trifouillé un peu dans le forum à la recherche d'une solution à mon probleme mais je pense que mon probleme encore une fois vient de ma non-compréhension du fonctionnement d'un composant ou d'une méthode et donc une explication pourrait me faire mieux comprendre la situation ..
je joins les codes :
Ma classe fenetre:
Ma classe panneau:
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 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class WindowJTY extends JFrame{ JPanel north = new JPanel(); JPanel west = new JPanel(); JPanel south = new JPanel(); Panneau center = new Panneau(); JButton boutonLeft = new JButton("<=="); JButton boutonRight = new JButton("==>"); JButton boutonPlus = new JButton("+"); JPanel contain = new JPanel(); public WindowJTY(){ this.setTitle("Test"); this.setSize(800, 600); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); north.setBackground(Color.black); north.setPreferredSize(new Dimension(75,75)); west.setBackground(Color.green); west.setPreferredSize(new Dimension(75,75)); south.setBackground(Color.black); south.setPreferredSize(new Dimension(75,75)); south.add(boutonLeft); south.add(boutonPlus); south.add(boutonRight); boutonLeft.addActionListener(new BoutonListenerLeft()); boutonRight.addActionListener(new BoutonListenerRight()); contain.setLayout(new BorderLayout()); contain.add(north, BorderLayout.NORTH); contain.add(west, BorderLayout.WEST); contain.add(south, BorderLayout.SOUTH); contain.add(center, BorderLayout.CENTER); this.setContentPane(contain); this.setVisible(true); } public class BoutonListenerLeft implements ActionListener{ public void actionPerformed(ActionEvent arg0){ Image map4 = null; try { map4 = ImageIO.read(new File("map4.bmp")); } catch (IOException e) { e.printStackTrace(); } center.setImg(map4); center.repaint(); contain.repaint(); } } public class BoutonListenerRight implements ActionListener{ public void actionPerformed(ActionEvent arg0){ Image map3 = null; try { map3 = ImageIO.read(new File("map3.bmp")); } catch (IOException e) { e.printStackTrace(); } center.setImg(map3); center.repaint(); contain.repaint(); } } }
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 import java.awt.Graphics; import java.awt.Image; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JPanel; public class Panneau extends JPanel{ protected Image img; public Image getImg() { return img; } public void setImg(Image img) { this.img = img; } public void paintComponent(Graphics g) { try { img = ImageIO.read(new File("map3")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } g.drawImage(img, 0, 0, this); } }
Partager