【问题标题】:Animation in SwingSwing 中的动画
【发布时间】:2013-10-08 09:40:44
【问题描述】:

我有一个使用 Swing 编写的项目,我想通过使用 javax.swing.Timer 向某些组件(JButtonJScrollPaneJSplitPane)添加动画来使其更流畅(就像 JavaFX 一样)。

那不是游戏。我想将Timer 用于像mouseHover 事件、下拉或滚动这样的短动画。但问题是,应该创建很多 Timer 对象。

问题:它对 JVM 执行什么操作?我会在应用会话期间启动和停止很多计时器。

【问题讨论】:

    标签: java swing animation timer


    【解决方案1】:

    它对 JVM 执行什么操作?我会开始和停止很多 应用会话期间的计时器。

    Swing Timer 以指定的时间间隔触发 ActionEvents 以动画对象提供函数:start()、stop()、restart(),最重要的是setDelay(int delay) 以特定的时间间隔触发连续的动作事件,确保所有此类事件任务在 EDT(事件调度线程)中执行。 All created Timers 的等待状态由单个共享线程 TimerQueue 管理,该线程由执行的第一个 Timer 对象创建。

    处理timer 可能很乏味。我不会每次都编写相同的Timer 处理代码,而是使用像swing TimingFrameWork 这样的库。

    【讨论】:

    • 你的回答很好,但我的问题没有答案:What action does it perform for JVM?eat 下班后会有很多内存吗?
    • 摆动计时器允许在 EDT 中执行操作。不,它不会占用内存,而不是在执行任务时居住在其中的对象。它遵循任何其他线程对对象执行的相同规则。摆动定时器的周期性执行很像线程睡眠和唤醒功能。因此,当它执行完并等待下一个 shedule 时,使用的对象可能会被垃圾回收。
    • 但是java中的Threads是不可重新触发的。一旦它们启动,它们将在应用程序会话期间甚至在它们完成之后在 JVM 内存中。不好吗?
    • 并非如此。这完全取决于应用程序设计。一个摆动计时器通常用于像移动物体这样的动画,我不想每次都为下一个移动事件创建一个新的计时器,不是吗?它会增加处理的复杂性。每个对象和线程都占用内存,Timer 也是如此,但我们需要考虑平衡成本
    【解决方案2】:

    那不是游戏。我想将 Timer 用于短动画,例如 mouseHover 事件、下拉菜单或滚动。但问题是,很多 应该创建计时器对象。

    • 这仅适用于一个Swing Timer 以及来自mouse or key_eventsSwing Timer 的(鼠标悬停事件、下拉或滚动)焦点已实现start()stop()restart(),最后一个重要的是等待用户操作结束

    • 逻辑上不可能产生多个事件,不同的情况会在多点触控显示的情况下,在这种情况下也只有一个事件重要,其余事件是方向,缩放,因素等...

    【讨论】:

    • > 逻辑上不可能产生多个事件 你的意思是当时,对吗?我的意思是during app session。我的 RAM 会发生什么变化?
    • 我的 RAM 会发生什么变化? ---> 计时器对 JVM 使用的内存或增加 JVM 分配的内存没有影响,在 Swing Action 的所有事件被执行之后,通过假设那些用于动画的对象存储在局部变量中,然后有已注册增加的 Java2D/Graphics(2D) 对象,它们是临时类型和 finalize()d,GC'ed
    • 那么,是否可以将javax.swing.Timer 用于此类目的?
    • 1.是 Java2D 或闪烁一系列图标,2. 是或不是 JComponents 作为对象,这是一个非常开放的问题,用于在屏幕上闪烁 JComponents,JComponents!= JTextField 中的文本或 JList,JTable 中的渲染对象...... (例如,更好的解释)
    • Timer 使用java Threads。但是java中的Threads是不可重新触发的。一旦他们开始,他们将在应用程序会话期间在JVM memory,即使在他们完成之后。不好吗?
    猜你喜欢
    • 2012-04-05
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2012-02-05
    相关资源
    最近更新 更多