import java.awt.Color; import java.awt.Font; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JPanel; public class Panneau extends JPanel { private int posX = -50; private int posY = -50; private String forme = "ROND"; public void paintComponent(Graphics g){ //On choisit une couleur de fond pour le rectangle g.setColor(Color.white); //On le dessine de sorte qu'il occupe toute la surface g.fillRect(0, 0, this.getWidth(), this.getHeight()); //On redéfinit une couleur pour le rond g.setColor(Color.red); //On délègue la méthode de dessin à la méthode draw() draw(g); } private void draw(Graphics g){ if(this.forme.equals("ROND")){ g.fillOval(posX, posY, 50, 50); } if(this.forme.equals("CARRE")){ g.fillRect(posX, posY, 50, 50); } if(this.forme.equals("TRIANGLE")){ //Calcul des sommets //Le sommet 1 se situe à la moitié du côté supérieur du carré int s1X = posX + 25; int s1Y = posY; //Le sommet 2 se situe en bas à droite int s2X = posX + 50; int s2Y = posY + 50; //Le sommet 3 se situe en bas à gauche int s3X = posX; int s3Y = posY + 50; //Nous créons deux tableaux de coordonnées int[] ptsX = {s1X, s2X, s3X}; int[] ptsY = {s1Y, s2Y, s3Y}; //Nous utilisons la méthode fillPolygon() g.fillPolygon(ptsX, ptsY, 3); } if(this.forme.equals("ETOILE")){ //Pour l'étoile, on se contente de tracer des lignes dans le carré //correspondant à peu près à une étoile... //Mais ce code peut être amélioré ! int s1X = posX + 25; int s1Y = posY; int s2X = posX + 50; int s2Y = posY + 50; g.drawLine(s1X, s1Y, s2X, s2Y); int s3X = posX; int s3Y = posY + 17; g.drawLine(s2X, s2Y, s3X, s3Y); int s4X = posX + 50; int s4Y = posY + 17; g.drawLine(s3X, s3Y, s4X, s4Y); int s5X = posX; int s5Y = posY + 50; g.drawLine(s4X, s4Y, s5X, s5Y); g.drawLine(s5X, s5Y, s1X, s1Y); } } public void setForme(String form){ this.forme = form; } public int getPosX() { return posX; } public void setPosX(int posX) { this.posX = posX; } public int getPosY() { return posY; } public void setPosY(int posY) { this.posY = posY; } }