Bonjour,
Je cherche à créer un classe complexe drawable. Pour cela, il me semble qu'il faut implémeter une interface Shape. Mais je n'y arrive pas. (précision : je travaille avec java1.5 par obligation - cela m'est imposé. D'après le tuto de sun, cela semble plus simple avec 1.6)
Voici mon code, si quelqu'un voit mon erreur ou mes oublis...
1ère classe : cercle implémenté Shape, l'objet que je voudrai pouvoir dessiner avec un draw
2e fichier : l'interface Shape
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 package ObjetPrDessiner; import java.awt.geom.Ellipse2D; import java.awt.geom.Point2D; public class Cercle implements Shape { private double radius; private Ellipse2D.Double circle; private Point2D.Double centreCercle; public Cercle(Point2D.Double control){ centreCercle = control; radius = 50; } public void draw() { circle = new Ellipse2D.Double(centreCercle.x - radius, centreCercle.y - radius, 2.0 * radius, 2.0 * radius); } }
3e fichier : le panel où dessiner le cercle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public interface Shape { public void draw(); }
*** c'est "g2D.draw(cercle1);" qui n'est pas reconnu
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 import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.Point2D; import javax.swing.JPanel; public class DessinerCercle extends JPanel{ private Point2D.Double centreC; private Cercle cercle1; /** espace graphique pour le dessin */ private Graphics2D g2D; /** epaisseur des traits */ private BasicStroke bs; public DessinerCercle(Point2D.Double centre){ // création des variables centreC = centre; init(); } // création du cercle public void init(){ cercle1 = new Cercle(centreC); bs = new BasicStroke(2,BasicStroke.CAP_SQUARE,BasicStroke.JOIN_ROUND); } // dessin public void paint(Graphics g){ g2D = (Graphics2D) g; g2D.setColor (Color.red); g2D.setStroke(bs); g2D.drawLine((int)centreC.x -50,(int) centreC.y, (int)centreC.x +50, (int)centreC.y); g2D.draw(cercle1); } }
Merci de votre aide
Partager