public void paint(Graphics g){
double dr=0.0;
int X=300;int Y=400;int r=200; int d=2;
for(int i=0;i<360;i++){
g.fillOval(X+r*Integer.parseInt(String.valueOf(java.lang.Math.cos(dr))),
  Y+r*Integer.parseInt(String.valueOf(java.lang.Math.sin(dr))),d,d);
dr+=1.0;
}
}fillOval只支持int类型的数据,这样会使得不够精确。
所以有没有函数或者方法使得支持double类型的啊,自己写方法除外~

解决方案 »

  1.   

    我自己知道啦
    package draw;import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.geom.Ellipse2D;public class Circle {
       private double pointX,pointY;
       private double radius;
       private Color color;
       public Circle(double x,double y,double r,Color c){
       this.pointX=x;
       this.pointY=y;
       this.radius=r;
       this.color=c;
       }
       public void setPointX(double x){
       this.pointX=x;
       }
       public double getPointX(){
       return  pointX;
       }
       public void setPointY(double y){
       this.pointY=y;
       }
       public double getPointY(){
       return pointY;
       }
       public void setRadius(double r){
       this.radius=r;
       }
       public double getRadius(){
       return radius;
       }
       public void setColor(Color c){
       this.color=c;
       }
       public Color getColor(){
       return color;
       }
       public void drawCircle(Graphics g){
       Graphics2D g2=(Graphics2D)g;
       double diameter = 2*radius;
       Color ys=g.getColor();
       g.setColor(this.getColor());
       Ellipse2D circle=new Ellipse2D.Double();
       circle.setFrameFromCenter(pointX, pointY, pointX+radius, pointY+radius);
       ((Graphics2D) g).fill(circle);
      // g.fillOval(pointX-radius,pointY-radius,diameter,diameter);
       }
    }