applet绘制曲线

curvePic.java

package src;


import java.awt.*;

import java.applet.*;

import java.awt.event.*;

import java.util.*;

import java.lang.*;

 

public class curvePic extends Applet {

   static int LEN;

   static int Xo,Yo;

   static int X2,Y2;

   final int X1=50,Y1=30;

   int Yunit,Xunit;

   float Unit;

   String Xstr,Ystr;

   String Xstring;

   int[] Xval;

   int[] Yval;

   float[] Y=new float[5];

   int[] X=new int[8];

   float[] temp=new float[1];

   int Xmax,Xmin;

   float Ymax,Ymin;

   int[] Yvalue;

   int[] Xvalue;

   int xpar=0;

  

  public void init() {

}

 

  public void start() {

    int width=this.getBounds().width;

    int height=this.getBounds().height;

    setSize(width,height);

    Xstr=getParameter("xValue");

    Ystr=getParameter("yValue");

    Xstring=getParameter("xStr");

    Xval=Substr(Xstr);

    Yval=Substr(Ystr);

    LEN=Xval.length;

    Yvalue=new int[LEN];

    Xvalue=new int[LEN];

    Xo=50;

    Yo=height-30;

    X2=width-30;

    Y2=Yo;

    Yunit=(height-100)/4;

    Ymax=getMaxVal(Yval);

    Ymin=0;               

    Xmax=getMaxVal(Xval); 

    Xmin=0;               

    if(Ymax==Ymin){

        Ymin=0;

    }

    if(Xmax==Xmin){

        Xmin=0;

    }

    float tempy=((float)Ymax-(float)Ymin)/4;

    Y[0]=0;        

    Y[1]=(Ymin+tempy)/100;

    Y[2]=(Ymin+tempy*2)/100;

    Y[3]=(Ymin+tempy*3)/100;

    Y[4]=(Ymax)/100;

    xpar=(int)(Xmax/100)+1;

    Xunit=(width-100)/xpar;

    float Xtempy=0;

    X[0]=0;

    int xi;

    for(xi=1;xi<=xpar;xi++){

        X[xi]=xi;

        if(xi==xpar){

             Xtempy=100;

        }

    }

    Yvalue=getY(Yunit,tempy,Ymin,Yval);

    Xvalue=getX(Xunit,Xtempy,Xmin,Xval,width,xpar);

  }

 

  public static int[] getY(int unit,float diff,float ymin,int[] value){

    int I=0;

    int[] result=new int[LEN];

    for(I=0;I<LEN;I++)

    result[I]=(int)(Yo-((4*unit)/(diff*4))*(value[I]-ymin));

    return result;

  }

 

   public static int[] getX(int unit,float diff,float xmin,int[] value,int wideth,int xaxis){

    int I=0;

    int[] result=new int[LEN];

    for(I=0;I<LEN;I++)

    result[I]=(int)(X2-((unit)/(diff))*(value[I]));

    return result;

  }

 

  public void paint(Graphics g){ 

    java.text.DecimalFormat df1 = new java.text.DecimalFormat("##0");

    g.setColor(Color.red); 

    g.drawLine(Xo,Yo,X1,Y1);

    int I;

    for(I=0;I<5;I++){

        g.drawLine(Xo-5,Yo-Yunit*I,Xo,Yo-Yunit*I);

        g.drawString( df1.format(Y[I]),Xo-38,Yo-Yunit*I);

    }

    g.drawLine(X1,Y1,X1-5,Y1+5);

    g.drawLine(X1,Y1,X1+5,Y1+5);

    g.drawLine(Xo,Yo,X2,Y2);

    for(I=0;I<=xpar;I++){

        g.drawLine(Xo+Xunit*I,Yo,Xo+Xunit*I,Yo+5);

        g.drawString(Integer.toString(X[I]),Xo+Xunit*I-6,Yo+20);

    }

    g.drawLine(X2,Y2,X2-5,Y2-5);

    g.drawLine(X2,Y2,X2-5,Y2+5);

    g.setColor(Color.blue);

    g.drawString("Öµ(value)",X1-50,Y1);

    g.drawString(Xstring,X2-20,Y2+20);

    for(I=0;I<LEN;I++){

      if(Ymax==0){

           g.drawLine(Xo,Yo,Xo+Xunit*xpar,Yo);

      }

      else if(I==LEN-1){

          g.drawLine(X2+50-Xvalue[0],Yvalue[0],X2+50-Xvalue[I],Yvalue[I]);

      }

      else{

          g.drawLine(X2+50-Xvalue[I],Yvalue[I],X2+50-Xvalue[I+1],Yvalue[I+1]);

      }

    }

  }

 

  public static int[] Substr(String str){

    int I=0;

    StringTokenizer st = new StringTokenizer(str,";");

    int len=st.countTokens();

    int[] val=new int[len];

    while(st.hasMoreTokens()){

        float midtemp=Float.parseFloat(st.nextToken())*100;

        val[I]=Math.round(midtemp);

        I++;

    }

    return val;

  }

 

  public static int getMaxVal(int[] Maxval){

    int I,result;

    result=Maxval[0];

    for(I=0;I<Maxval.length;I++){

        if(result<Maxval[I])

        result=Maxval[I];

    }

    return result;

  }

 

  public static int getMinVal(int[] Minval){

    int I,result;

    result=Minval[0];

    for(I=0;I<Minval.length;I++){

        if(result>Minval[I])

        result=Minval[I];

    }

    return result;

  }

 

}

 test.html

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<html>

<APPLET  height=300 width=500 code=curvePic.class>

<PARAM NAME="xValue" VALUE=2.07;2.17;2.25;2.34;2.45;2.52;2.63;2.71;2.80;2.91;2.99;3.05;3.15;3.23;3.31;3.37;3.43;3.53;3.56;3.62;3.72;3.75;3.81;3.87;3.89;3.96;3.98;4.02;4.05;4.08;4.11;4.12;4.14;4.16;4.17;4.17;4.18;4.19;4.19;4.19;4.20;4.19;4.19;4.19;4.18;4.17;4.10;4.08;4.06;4.04;4.01;3.97;3.93;3.91;3.84;3.79;3.75;3.67;3.65;3.59;3.54;3.49;3.41;3.34;3.30;3.26;3.13;3.10;3.01;2.91;2.87;2.79;2.69;2.62;2.53;2.46;2.35;2.22;2.20;2.05;1.96;1.89;1.77;1.70;1.59;1.49;1.45;1.27;1.20;1.17;.97;.94;.90;.73;.70;.63;.52;.48;.41;.34;.29;.24;.20;.15;.12;.10;.06;.04;.04;.02;.01;.00;.00;.00;.02;.03;.04;.09;.13;.18;.22;.27;.33;.38;.45;.50;.57;.64;.72;.79;.88;.96;1.03;1.13;1.20;1.29;1.39;1.47;1.56;1.66;1.76;1.83;1.93;2.02;>

<PARAM NAME="yValue" VALUE=15;15;15;15;15;100;15;15;16;15;15;15;15;15;15;15;15;16;15;15;15;15;16;16;15;15;15;16;15;15;15;15;16;15;15;15;15;15;15;15;15;15;15;15;15;16;15;16;16;16;18;17;18;19;19;20;19;19;19;20;22;21;20;22;22;23;22;21;21;22;23;23;21;20;21;21;20;20;20;20;20;18;17;18;18;18;17;16;17;16;16;16;15;16;16;15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;16;16;16;17;17;18;17;16;16;17;17;18;17;16;16;16;16;16;16;16;16;15;15;15;15;16;15;>

      <PARAM NAME="xStr" VALUE=时间(T)>

 </APPLET>

</html>
 

你可能感兴趣的:(html)