java - 使用 Swing 和 Threads 设计 JApplet 动画

标签 java swing animation applet

我正在尝试实现一个可以制作一些动画的小 Applet。我想在 JPanel 中和 Animation JPanel 下方制作动画,播放/暂停和跳过按钮来控制动画。为了正确地做到这一点,我想我需要在线程中制作动画。 (正确吗?)

我的问题是:组织此应用程序的类的好方法是什么?如何让我的动画线程在 JPanel 中运行?

我一直在 oracle.com 上查看教程,这就是我目前所了解的...

Class AnimationApplet extends JApplet {

...

    public void init(){
        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                public void run() {
                    createGUI();
                }
            });
            } catch (InterruptedException ex) {
                Logger.getLogger(TabApplet.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InvocationTargetException ex) {
                Logger.getLogger(TabApplet.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

     private void createGUI() {
        AnimationPanel ac = new AnimationPanel();
        this.setConentPane(ac);
     }

} // Class AnimationApplet

class AnimationPanel extends JPanel implements ActionListener {
    ...
}

编辑:我不知道这是否有帮助,但这正是我正在尝试做的。我正在创建一个吉他谱播放器,因此它需要继续在屏幕上滑动音符,然后在某些点(第 16 个音符)检查是否有要设置动画的音符。这似乎有点困难,因为您不能将毫秒除以每分钟的节拍数。所以现在,我正在考虑将其分为 4 或 5 个速度(最慢、慢速、中速等);

谢谢,

内特

最佳答案

不,您不需要直接使用线程,因为您可以简单地使用 Swing 计时器来驱动动画(尽管了解这在幕后使用线程)。我会让我的动画组件像您所做的那样扩展 JPanel 并在其 paintComponent 方法中绘制。我会避免像上面那样让任何 gui 或“ View ”类扩展一个监听器类,因为这会使单个类做太多事情。我要么使用匿名内部监听器,要么使用私有(private)内部类监听器,或者如果复杂则使用独立的独立监听器类。

另一个警告——确保您的 paintComponent 方法只进行绘画和绘画,它不包含任何程序逻辑,并避免在该方法中创建类或读取图像。它需要精简和快速。

关于java - 使用 Swing 和 Threads 设计 JApplet 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5294082/

相关文章:

当手指在屏幕上而不抬起时,javascript 动画在 ios safari webkit 浏览器中停止

ios - UiView.animateWithDuration 不是动画 Swift

java - Spring登录表单不起作用

java - 为什么 CSVWriter 和 CSVReader 使用不同的默认转义字符?

java - 从 YouTube API 解析 JSON

java - 使用 GridBagLayout 调整大小时防止组件散开

java - 如何插入、更新和删除从 (SQLite) 数据库加载的 JTable 中的项目

java - 是否可以在全局范围内了解 FocusOwner(Java)?

java - 失败:SemanticException [错误10014]:行1:21错误的参数 'stock_price_high':

animation - 使用来自 Three.js 中 COLLADA 文件的解析数据的骨骼动画