我正在尝试编写一个创建线程并执行两项操作的java applet程序:
请看下面的代码
public class Sample extends applet implements Runnable
{
Thread t=new Thread(this);
int y=500;
public void init()
{
t.start();
for(int i=0;i<30;i++)
{
System.out.print(i);
try {
Thread.sleep(1000);
} catch(Exception e) {}
}
}
public void run()
{
while(true)
{
repaint()
if(y==100) y=500; else y-=100;
}
}
public void paint(Graphics g)
{
g.fillOval(50,y,50,50);
}
}
我写了这段代码,认为黑球会上下移动并同时打印数字,但是当我运行它时会打印数字,并且在打印所有数字之前球不会移动。我不明白为什么。
答案 0 :(得分:0)
您可以使用.init()
方法进行打印。就像我在上面的评论中所说的那样,我对AWT / Swing知之甚少,而且我对Applet
类知之甚少,但也许你应该从.start()
进行打印。
Javadoc说.init()
被称为“告知applet它已被加载”,并且start()
被称为“通知applet它应该开始运行。”
就像我在上面的评论中也说的那样。我会使用计时器来驱动动画,而不是显式创建一个线程。
我可能会使用计时器来驱动计数:我会编写一个.start()
方法,只启动两个计时器并返回。