package xf;import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;
import xf.Hanshu;
public class Main extends Applet {
int max_x; //屏幕分辨率
int max_y;
int x_o; //坐标系原点位置
int y_o;
int length_x; //坐标轴长度
int length_y;
int len; //尖角x与y的长度
int space_x;                   //坐标系x轴标准大小与分辨率之间的比率
int space_y;                   //坐标系y轴标准大小与分辨率之间的比率
int x_count; //x轴画制刻度的次数
int y_count;
int len_kedu; //x轴y轴画制刻度时的长度 一般不变
Image img;
public void init()
{
max_x=1440; //屏幕分辨率
max_y=900;
x_o=max_x/2-670; //坐标系原点设置
y_o=max_y/2-100;
length_x=500;
length_y=300;
len=5;
space_x=20;
space_y=20;
x_count=length_x/space_x;
y_count=length_y/space_y;
len_kedu=5;
img=getImage(getDocumentBase(),"1.jpg");
}
public void paint(Graphics g)
{
g.drawImage(img, 0, 0, this);
g.drawLine(x_o, y_o, x_o+length_x, y_o);//坐标系x轴画制
g.drawLine(x_o, y_o, x_o, y_o-length_y);//坐标系y轴画制
g.drawString("O", x_o-10, y_o+10);
g.drawString("X", x_o-10, y_o-length_y+5);
g.drawString("Y", x_o+length_x+5, y_o);
g.drawLine(x_o, y_o-length_y, x_o-len, y_o-length_y+len);//x轴尖角
g.drawLine(x_o, y_o-length_y, x_o+len, y_o-length_y+len);
g.drawLine(x_o+length_x, y_o, x_o+length_x-len, y_o-len);//y轴尖角
g.drawLine(x_o+length_x, y_o, x_o+length_x-len, y_o+len);
int x=x_o;
int y=y_o;
for(int i=1;i<x_count;i++)
{
x+=space_x; //循环变量  画制x标度位置
g.drawLine(x, y_o, x, y_o-len_kedu);
}
for(int i=1;i<y_count;i++)
{
y-=space_y; //循环变量  画制x标度位置
g.drawLine(x_o, y, x_o+len_kedu, y);
}
//g.drawOval(20, 20, 5, 5);
//画y=3x+2这个函数
//说明画直线时只需知道此直线的两个点  重要的是要把它转化成自己坐标系内的点!!!
//额  直线时取点一定要间隔大...否则 画的直线很短
/* int x1=0;
int x2=5;
int y1;
int y2;
y1=3*x1+2;
y2=3*x2+2;
*/
//坐标转化公式为x=x_o+x*space_x,y=y_o-y*space_y
//g.drawLine(x_o+x1*space_x, y_o-y1*space_y, x_o+x2*space_x, y_o-y2*space_y);
Hanshu a=new Hanshu(10,1);
double data_x[]=a.getX();
double data_y[]=a.getY();
/*
for(int i=0;i<a.getCount();i++)
{
for(int j=0;j<5;j++)
{
System.out.print("("+data_x[i]+","+data_y[i]+","+i+")"+"   ");
if(j==4)
{
System.out.println(" ");
break;
}
i++;
}
}
*/
System.out.println("--------------------------------------------");/*
for(int i=0;i<a.getCount()-1;i++)
{
g.drawLine(x_o+(int)data_x[i]*space_x, y_o-(int)data_y[i]*space_y, x_o+(int)data_x[i+1]*space_x, y_o-(int)data_y[i+1]*space_y);
//g.drawLine((int)data_x[i], data_y[i], (int)data_x[i+1], (int)data_y[i+1]);
//g.drawLine(x_o+x1*space_x, y_o-y1*space_y, x_o+x2*space_x, y_o-y2*space_y);
g.drawOval(x_o+(int)data_x[i]*space_x,  y_o-(int)data_y[i]*space_y, 2, 2);
}
*/
}}
为什么明明没有循环 但控制台输出却又好多啊行  
百思不得其解

解决方案 »

  1.   

    paint()本来就是反复刷屏的所有显示的东东都是画上去的,稍微一动就得重画,只是算法上不同
      

  2.   

    可是我在还有一个applet中测试输出是完全正查的啊
    package xf;import java.applet.Applet;
    import java.awt.Graphics;
    public class TestApplet extends Applet {
    public void init()
    {
    //int a;
    System.out.println(".............");
    }
    public void paint(Graphics g)
    {
    for(int i=0;i<10;i++)
    System.out.print(i+" ");
    g.drawString("ss",10, 10);
    g.drawString("22",20, 20);
    System.out.println("+++++++++");

    }}