bonjour, j'ai une qestion de débutant

comment centrer un rectagne java2D dans un JComponent?
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
 
@SuppressWarnings("serial")
public class SlipComponent2D extends JComponent{
	private static final float MARGIN = 40;//Marge en centimètre autour du repère du plan
	private float              scale = 0.5f;//Echelle par défaut
 
	public SlipComponent2D(Slip slip){
 
	}
 
	  /**
           * Dessine un composant
           */
	  @Override
	  protected void paintComponent(Graphics g) {
		  //Création d'une copie du contexte graphique
	    Graphics2D g2D = (Graphics2D)g.create();
	    //dessin du fond
	    paintBackground(g2D);
	    //Dessin du cadre
	    paintFrame(g2D);   
	    //libération des ressources associées à l'objet Graphics2D
	    g2D.dispose();
	  }
 
	  /**
           * dessine le fond du composant s'il est opaque
           */
	  private void paintBackground(Graphics2D g2D) {
	    if (isOpaque()) {
	      //Récupération de la couleur de fond d'une fenêtre
	      //dans le Look and feel
	      Color backgroundColor = UIManager.getColor("window");
	      //remplissage du composant avec de la couleur de fond
	      g2D.setColor(backgroundColor);
	      g2D.fillRect(0, 0, getWidth(), getHeight());
	    }
	  }
	  /**
           * dessine le cadre
           */
	  private void paintFrame(Graphics2D g2D) {
 
		  //couleur du rectangle
		  g2D.setColor(Color.WHITE);
		  //dessine un rectangle
		  g2D.fillRect((getPreferredSize().width/2),(getPreferredSize().height/2),80,80);
	  }
 
	  /**
           * Renvoie la taille préférée du composant
           */
	  @Override
	  public Dimension getPreferredSize() {
	    if (isPreferredSizeSet()) {
	    	//si la taille a été positionné avec setPreferedSize
	    	//renvoyer cette taille
	      return super.getPreferredSize();
	      //sinon, calcul des dimensions préférées en tenant
	      //compte de la bordure du composant, de la marge MARGIN
	      // et du rectangle englobant tous les traits
	    } else {
	      Insets insets = getInsets();
	      return new Dimension(
	          Math.round(( MARGIN * 2)* this.scale) + insets.left + insets.right,
	          Math.round(( MARGIN * 2)* this.scale) + insets.top + insets.bottom);
	    }
	  }
 
}
merci pour votre aide