我无法理解 Java 中的这个 Applet 和 Thread 代码

I cant understand this Applet and Thread code in Java

所以我目前正在学习 Java 小程序,并且有这段代码涉及一个小程序和一个线程,以便使用 repaint() 方法使小程序滚动消息字符串。

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

/*
<applet code="Banner" width=300 height=50>
</applet>
*/

public class Banner extends Applet implements Runnable
{
    String msg = " Java Rules the Web ";
    Thread t;
    boolean stopFlag;

    public void init()
    {
        t = null;
    }

    public void start()
    {
        t = new Thread(this);
        stopFlag = false;
        t.start();
    }

    public void run()
    {
        for(;;)
        {
            try
            {
                repaint();
                Thread.sleep(250);
                if(stopFlag)
                    break;
            }
            catch(InterruptedException exc)
            {

            }
        }
    }

    public void stop()
    {
        stopFlag = true;
        t = null;
    }

    public void paint(Graphics g)
    {
char ch;
    ch = msg.charAt(0);
        msg = msg.substring(1, msg.length());
        msg += ch;
        g.drawString(msg,50,30);
    }
}

所以问题是我不明白为什么 init 将 Thread 初始化为 null,什么时候调用 start 方法,什么时候调用 init 方法,还有什么时候调用 stop 方法以将 stopFlag 设置为 false 以及如何这最后一部分是否使字符串滚动:

public void paint(Graphics g)
    {
char ch;
    ch = msg.charAt(0);
        msg = msg.substring(1, msg.length());
        msg += ch;
        g.drawString(msg,50,30);
    }
}

谢谢

小程序容器在创建小程序时调用 init,在小程序可见时启动,在小程序消失时停止(就像您离开托管小程序的页面一样)。在 init 方法中将 t 字段设置为 null 不会执行任何操作,因为无论如何创建对象时它将为 null。通过从字符串的开头获取一个字符并将其放在字符串的末尾来滚动消息,然后 re-displaying 小程序中的字符串 window。线程每 250 毫秒执行一次此操作,直到小程序停止。

Applet 是一项过时的技术。