【发布时间】:2016-01-16 01:36:43
【问题描述】:
所以我目前正在学习 Java 小程序,并拥有涉及 Applet 和线程的代码,以便使用 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将线程初始化为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()没有理由将Thread t设置为 null。从首次加载小程序类或调用stop()时起,t就已经为空。
标签: java multithreading applet