Como desenhar um circulo perfeito na tela?

[code]package br.com.maxlider.base;

import java.awt.Color;
import java.awt.Point;

/**
*

  • @author Max Lider Classe responsavel pelas Elipses (Circulos)
    */
    public class Elipse implements Shape {
    private Point initialPoint;
    private Point finalPoint;
    private Integer width;
    private Integer heigth;
    private Integer pointx;
    private Integer pointy;
    private Color color;

    /**

    • @param initialPoint
    •        Ponto Inicial da Elipse
      
    • @param finalPoint
    •        Ponto Final da Elipse
      
    • @param color
    •        Cor da Elipse
      

    */
    public Elipse(Point initialPoint, Point finalPoint, Color color) {
    this.initialPoint = initialPoint;
    this.finalPoint = finalPoint;
    this.color = color;
    }

    /**

    • Retorna a largura da elipse, de acordo com seu ponto inicial, e final.
    • @return
      */
      public int getWidth() {
      if (getInitialPoint().x > getFinalPoint().x) {
      this.width = getInitialPoint().x - getFinalPoint().x;
      return this.width;
      } else {
      this.width = getFinalPoint().x - getInitialPoint().x;
      return this.width;
      }
      }

    /**

    • Retorna a Altura da Elipse, de acordo com seu ponto inicial, e final.
    • @return
      */
      public int getHeight() {
      if (getInitialPoint().y > getFinalPoint().y) {
      this.heigth = getInitialPoint().y - getFinalPoint().y;
      return this.heigth;
      } else {
      this.heigth = getFinalPoint().y - getInitialPoint().y;
      return this.heigth;
      }

    }

    public Point getInitialPoint() {
    return initialPoint;
    }

    public Point getFinalPoint() {
    return finalPoint;
    }

    public Integer getPointx() {
    return pointx;
    }

    public Integer getPointy() {
    return pointy;
    }

    public Color getColor() {
    return color;
    }

    /**

    • Metodo organiza as coordenadas dos eixos X e Y para direcionar
    • corretamente a rendenizacao.
      */
      public void draw() {
      pointx = getInitialPoint().x;
      pointy = getInitialPoint().y;
      if (getInitialPoint().x > getFinalPoint().x && getInitialPoint().y > getFinalPoint().y) {
      pointx = getFinalPoint().x;
      pointy = getFinalPoint().y;
      } else if (getInitialPoint().x > getFinalPoint().x && getInitialPoint().y < getFinalPoint().y) {
      pointx = getFinalPoint().x;
      pointy = getInitialPoint().y;
      } else if (getInitialPoint().x < getFinalPoint().x && getInitialPoint().y > getFinalPoint().y) {
      pointy = getFinalPoint().y;
      }
      }
      }[/code]

ESTA SEGUNDA PARTE PINTA, POR QUE MEU CIRCULO ESTA COM PROBLEMAS???..
Ele não está desenhando corretamente.

Elipse elipse = new Elipse(new Point(line.getPoint1().x, line.getPoint1().y), new Point(line.getPoint2().x, line.getPoint2().y), lineColor); elipse.draw(); draws.push(elipse); for (Shape e : draws) { g.setColor(((Elipse) e).getColor()); g.drawOval(((Elipse) e).getPointx(), ((Elipse) e).getPointy(), ((Elipse) e).getWidth(), ((Elipse) e).getWidth()); }

Que problema? Ficou oval em vez de circular? Se for isso, é um problema de coordenadas.

Teu código não indica erro nenhum.

Apenas pode ter sido um erro ao entrar o valor inicial e final (serem diferentes)

ou

Se a distorsão for bem pequena:

Um problema de escala visual em seu equipamento.

Em alguns, quando trabalho meus mapas, sou obrigado a recuperar o retângulo de
tela, recuperar as propriedades de video (nr de pixels horizontais e verticais) e
criar uma escala horizontal e outra vertical, por onde passam os valores de
forma a corrigir a imagem visual. Infelizmente parece que em alguns equipamentos,
um pixel não é exatamente quadrático.

Mostra uma foto de como está.