import java.applet.*;
import java.awt.*;
import java.util.*;
public class App extends Applet implements Runnable
{
    Thread runner;
    final int distance=3;
    final int numP=4;
    final int numArray=6;
    int[][] xPoints=new int[numArray][numP];
    int[][] yPoints=new int[numArray][numP];
    Color c=new Color(20,20,20);
    Random rd=new Random();
    public void paint(Graphics g)
    {
       g.setColor(c);
       for(int i=0;i<numArray;i++)
          g.drawPolygon(xPoints[i],yPoints[i],numP);
    }
    public void stop()
    {
      if(runner!=null)
      {
        runner.stop();
        runner=null;
       }
     }
    public void start()
    {
       if(runner==null)
       {
          runner=new Thread(this);
          runner.start();
       }
     }
     public void run()
    {
      while (true)
      {
        repaint();
       c=new Color(rd.nextInt(255),rd.nextInt(255),rd.nextInt(255));
      try
      {
        Thread.sleep(300);
      }
       catch(InterruptedException e)
      {
       } 
       for(int j=0;j<numP;j++)
       { 
          xPoints[0][j]=rd.nextInt(800);
          yPoints[0][j]=rd.nextInt(600);
        }
       for(int i=1;i<numArray;i++)
         for(int j=0;j<numP;j++)
         {
           xPoints[i][j]=xPoints[i-1][j]+distance;
           yPoints[i][j]=yPoints[i-1][j]+distance;
          }
      }
    }

       

解决方案 »

  1.   

    我刚学java不久(一个星期),对线程的概念还不清楚,这个程序
    纯是从书上一个关于动画的例子上套过来的。所以连为什么
    把产生多边形的随机点放在run方法里我都不清楚.只知道这样可以重画和延迟时间。还有看java的帮助看得实在是太累,有没有什么好的书可以代替它啊?
    这个程序运行时产生多边形的点也太过随机了,和windows的屏保"变幻线"
    一点也不像,谁有“变幻线”的程序麻烦贴上来给我学习一下,谢了.
      

  2.   

    http://www.java-cn.com/javaprogram/javaapplet/multi/001/line.zip变换线
      

  3.   

    画图的关键是要先画在内存缓冲区里面,等到一切都画好了,然后再更新屏幕显示你要是直接往屏幕上画,什么语言都慢!!  当然,Java 更慢 :-P
      

  4.   

    to gularess(无吃哪拉):为什么我用Hotjava也不能运行? 
    Hotjava应该不需要任何东西吧
      

  5.   

    to 1e21(花太香) :能不能把源代码给我啊,你给的那个已经编绎成.class文件了
      

  6.   

    经过观察我将程序改为如下代码,基本是那样动的,可是闪烁太多,还有线条的颜色怎么让它能慢慢过渡改变啊?麻烦哪位可将下面程序修改得不闪烁啊,我手上实在没这方面的资料.
    import java.applet.*;
    import java.awt.*;
    import java.util.*;
    public class App extends Applet implements Runnable
    {
        Thread runner;
        final int distance=3;
        final int numP=4;
        final int numArray=6;
        int[] dx=new int[numP];
        int[] dy=new int[numP];
        int[][] xPoints=new int[numArray][numP];
        int[][] yPoints=new int[numArray][numP];
        Color c=new Color(20,20,20);
        Random rd=new Random();
        public void paint(Graphics g)
        {
           g.setColor(c);
           for(int i=0;i<numArray;i++)
              g.drawPolygon(xPoints[i],yPoints[i],numP);
        }
        public void init()
        {
           for(int j=0;j<numP;j++)
           { 
              xPoints[0][j]=rd.nextInt(800);
              yPoints[0][j]=rd.nextInt(600);
              dx[j]=20;
              dy[j]=20;
            }
         }
           
        public void stop()
        {
          if(runner!=null)
          {
            runner.stop();
            runner=null;
           }
         }
        public void start()
        {
           if(runner==null)
           {
              runner=new Thread(this);
              runner.start();
           }
         }
       public void run()
      {
        while (true)
       {
          c=new Color(rd.nextInt(255),rd.nextInt(255),rd.nextInt(255));
          try
          {
            Thread.sleep(150);
          }
           catch(InterruptedException e)
          {
           } 
           for(int j=0;j<numP;j++)
           { 
              if (xPoints[0][j]<0||xPoints[0][j]>800)
                 dx[j]=-dx[j];
              if (yPoints[0][j]<0||yPoints[0][j]>600)
                 dy[j]=-dy[j];
               xPoints[0][j]+=dx[j];
               yPoints[0][j]+=dy[j];
            }
           
           for(int i=1;i<numArray;i++)
             for(int j=0;j<numP;j++)
             {
               xPoints[i][j]=xPoints[i-1][j]+distance;
               yPoints[i][j]=yPoints[i-1][j]+distance;
              }
            repaint();
          }
        }

      

  7.   

    可以用双缓冲技术呀,在update()里面用,具体代码,很简单,你的资料应该有(我记得不太清楚了,呵呵)