首次尝试理解Java中的applet和runnable

时间:2014-03-29 23:52:16

标签: java multithreading applet

我是Java的新手。我需要帮助找出我将在下面显示的一些代码。代码的要点是简单地创建一个applet,它使用X位置的变化显示从左向右移动的球。我已经开始关注一个网站的applet教程,该教程使我可以使用这些代码(http://www.javacooperation.gmxhome.de/BallBewegungEng.html)。基本上,我需要有人来解释以下方法及其内容:start方法(什么是线程?我知道它是一个对象,但它在这里服务的目的是什么?)。 run方法(当我将线程优先级设置为MIN / MAX时,我到底在做什么?为什么即使没有创建这样的方法,这个方法也会调用repaint()方法?)。最后,paint方法(g.fillOval行究竟是做什么以及如何做?)。我试过谷歌搜索这些东西,但我很难理解理解我用大多数答案看到的行话。我需要以更简单的方式解释事物,以便我以后可以理解行话。

提前感谢您的帮助。代码:

import java.applet.*;
import java.awt.*;

    public class MovingBall extends Applet implements Runnable
    {

       int x_pos = 10;
       int y_pos = 150;
       int radius = 20;

       public void init()
       {
          setBackground (Color.blue);
       }

       public void start()
       {
          Thread th = new Thread(this);
          th.start();
       }

       public void stop()
       {

       }

       public void destroy()
       {

       }

       public void run()
       {
          Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

          while(true)
          {
             x_pos++;

             repaint();

             try
             {
                Thread.sleep (20);
             }
             catch(InterruptedException ex)
             {

             }

             Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
          } 
       }

       public void paint (Graphics g)
       {
          g.setColor (Color.red);

          g.fillOval (x_pos - radius, y_pos - radius, 2 * radius, 2 * radius);
       }

    }

1 个答案:

答案 0 :(得分:0)

当你想同时运行多段代码而不中断其他线程时,你会使用一个线程。在这种情况下,您使用线程重新绘制屏幕并暂停循环而不影响程序的其余部分。

run方法将从您传递给要运行的线程的Runnable对象重写。创建线程时,将传递给runnable对象并定义一个run方法,该方法将在线程启动时运行。

此类中未定义repaint方法,但它在父类(Applet)中定义,因此您可以在此类中调用它。

paint方法也是从Applet重写的,所以你要定义applet在运行paint方法时会做什么。