java - 在 Java Applet 中连续绘制图像

标签 java animation applet awt event-dispatch-thread

我正在尝试在 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/

相关文章:

java - Android应用程序Listview无法滚动到底部以在java中使用appium搜索特定元素

java - 在 Mac OS X 上,如果我的应用程序尚未运行,通过双击文档来打开我的文档将会失败

c# - Windows 应用程序的动画

ios - 翻转过渡动画后 IBOutlet 为 nil

java - Add(GObject obj) 方法不会在小程序上绘制对象

Applet 中显示 Java Awt 组件但不显示 Swing 组件

java - 在 Java 小程序中获取页面 URL 的 2 种方法,每种方法有什么区别和/或好处?

java - 如何在java中运行sudo poweroff

java - 跨应用程序发送参数

javascript - Jquery .animate() 在我第二次触发它时不起作用