我正在尝试在 Applet 上绘制大约 100 张图像。当我这样做时,由于过程太快,我无法查看图像。所以我添加了 sleep 功能,这样我就可以在从一幅图像到另一幅图像的过渡之间暂停一下。但这工作异常。我看不到任何照片,我认为 sleep 被一次又一次地召唤。请帮忙。
这是我的代码:
public class Test extends Applet
{
public void init()
{
setSize(1000,1000);
}
public void make(Graphics g,int i)
{
}
public void paint(Graphics g)
{
int i=0;
for(i=0;i<100;i++)
{
if(i!=65)
{
Image img = getImage(getDocumentBase(), "abc"+i+".png");
g.drawImage(img, 0, 0, this);
try
{
Thread.sleep(1000);
}
catch(Exception exception)
{
}
}
}
}
}
现在您可以看到我有从 0 到 99 的图像,我希望它们出现在我的 Applet 窗口中,并且在显示图像后应该有 1 秒的延迟。但这种情况并非如此。请帮忙
最佳答案
sleep
将卡住 EDT(事件调度线程)。由于 Swing 是单线程框架,任何阻塞(如 sleep )都会阻止 EDT 运行,因为 paint
是从 EDT 的上下文 调用的。不要使用 sleep ,使用 Timer
相反。
另外请注意,捕获
exception 而不处理它是不好的做法。这将隐藏代码中可能发生的严重意外情况,至少打印错误消息。
关于java - 在 Java Applet 中连续绘制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25346998/