Bonjour,
Dans le cadre d'un projet pour la spécialité ISN en terminale, je me suis lancé dans la programmation d'un jeu avec une interface graphique.
J'ai créée une BufferedImage dans une de mes class, sur laquelle j'ai dessiné plusieurs formes/lignes etc..
J'aimerais savoir si il est possible (et si oui comment) de récupérer cette même BufferedImage avec les dessins qui sont associés dans une autre class.
Cela va peut-être vous paraître obscur, c'est pourquoi je poste mon code:
class n°1: (Définition de la Jframe dans laquelle j'intègre 5 boutons avec des ActionListener ainsi que la BufferedImage contenue dans la class n°2)
class n°2: (Création de la BufferedImage + dessins)
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 import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JButton; @SuppressWarnings("serial") public class Fenetre extends JFrame { public Fenetre(){ this.setTitle("Colonisation"); this.setSize(706, 750); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); this.setResizable(false); JButton bleu = new BB("Bleu"); JButton vert = new BV("Vert"); JButton orange = new BO("Orange"); JButton rouge = new BR("Rouge"); JButton jaune = new BJ("Jaune"); JPanel content = new JPanel(new BorderLayout()); JPanel contentSouth = new JPanel(); Cases cases = new Cases(); bleu.addActionListener(new ListenerBleu()); vert.addActionListener(new ListenerVert()); orange.addActionListener(new ListenerOrange()); rouge.addActionListener(new ListenerRouge()); jaune.addActionListener(new ListenerJaune()); contentSouth.add(rouge); contentSouth.add(bleu); contentSouth.add(vert); contentSouth.add(jaune); contentSouth.add(orange); content.add(contentSouth,BorderLayout.SOUTH); content.add(cases,BorderLayout.CENTER); this.add(content); this.setVisible(true); } class ListenerBleu extends JFrame implements ActionListener { public void actionPerformed(ActionEvent arg0) { ListenerBleuC LB = new ListenerBleuC(); } } class ListenerVert extends JFrame implements ActionListener { public void actionPerformed(ActionEvent arg0) { ListenerVertC LV = new ListenerVertC(); } } class ListenerOrange extends JFrame implements ActionListener { public void actionPerformed(ActionEvent arg0) { ListenerOrangeC LO = new ListenerOrangeC(); } } class ListenerJaune extends JFrame implements ActionListener { public void actionPerformed(ActionEvent arg0) { ListenerJauneC LJ = new ListenerJauneC(); } } class ListenerRouge extends JFrame implements ActionListener { public void actionPerformed(ActionEvent arg0) { ListenerRougeC LR = new ListenerRougeC(); } } }
class n°3: (class appellée par l'actionListener d'un des boutons)
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
100
101
102 import javax.swing.*; import java.io.*; import java.awt.*; import java.awt.image.BufferedImage; import java.util.Random; @SuppressWarnings("serial") public class Cases extends JPanel { final BufferedImage image = new BufferedImage(706, 750, BufferedImage.TYPE_INT_RGB); Graphics g = (Graphics)image.getGraphics(); int x1=0,y1=0,x4=1,y4=1,x5=1; int xp1=5,xp2=5,xg1=xp1-25,xg2=xp2,xd1=xp1+25,xd2=xp2,xh1=xp1,xh2=xp2+25,xb1=xp1,xb2=xp2-25; int xp[]={xp1,xp2}; int xg[]={xg1,xg2}; int xd[]={xd1,xd2}; int xh[]={xh1,xh2}; int xb[]={xb1,xb2}; public Cases() { g.setColor(Color.BLACK); while (x1<=706) { g.drawLine(x1, 0, x1, 600); x1+=25; } while (y1<=600) { g.drawLine(0, y1, 707, y1); y1+=25; } while (x5<=706) { paintAleat(g, x4, y4, 23, 23); x4+=25; x5+=25; } /* Color cpp= new Color(image.getRGB(xp1, xp2)); int pr=cpp.getRed(); int pg=cpp.getGreen(); int pb=cpp.getBlue(); int cpp1 = new Color(pr,pg,pb).getRGB(); Color cpd = new Color(image.getRGB(xd1, xd2)); int pr1=cpd.getRed(); int pg1=cpd.getGreen(); int pb1=cpd.getBlue(); int cpd1 = new Color(pr1,pg1,pb1).getRGB(); Color cpg = new Color(image.getRGB(xd1, xd2)); int pr2=cpg.getRed(); int pg2=cpg.getGreen(); int pb2=cpg.getBlue(); int cpg1 = new Color(pr2,pg2,pb2).getRGB(); if (cpp1==cpd1) { g.setColor(new Color(pr,pg,pb)); g.drawRect(0, 0, 24, 49); g.fillRect(0, 0, 24, 49); } */ } public void paintComponent(Graphics g) { g.drawImage(image, 0, 0, null); } public static void paintAleat(Graphics g, int x2, int y2, int x3, int y3) { while (y2<600) { Random r = new Random(); int valeurMin = 1, valeurMax = 6; int nr = valeurMin + r.nextInt(valeurMax - valeurMin); if (nr==1) { g.setColor(Color.blue); } if (nr==2) { g.setColor(Color.red); } if (nr==3) { g.setColor(Color.yellow); } if (nr==4) { g.setColor(Color.green); } if (nr==5) { g.setColor(new Color( 213, 128, 0)); } g.drawRect(x2, y2, x3, y3); g.fillRect(x2, y2, x3, y3); y2+=25; } } }
Dans mon exemple, j'aimerais faire appel à la BufferedImage de la class n°2 dans la class n°3.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 import javax.swing.*; import java.io.*; import java.awt.*; public class ListenerBleuC extends JPanel{ public ListenerBleuC() { System.out.println("HelloB"); } }
Merci d'avance !
Partager