java swing 定时器...叹息

标签 java swing

我正在尝试使用 Swing 计时器来补偿帧速率不一致。我试过:


class TimerListener implements ActionListener {
   public void actionPerformed(ActionEvent e){
         timeCur = System.currentTimeMillis();
         timer.setDelay(speed - (int)(timeCur - timePrev));
         repaint();
    }
}
...
public void paintComponent(Graphics g){...
        timePrev = System.currentTimeMillis();
}
 speed=30;
 private long timePrev=System.currentTimeMillis(), 
 timeCur=System.currentTimeMillis();
无济于事。如何解决这个问题?

最佳答案

javax.swing.Timer 的实例在事件调度线程上触发,当帧速率太高时合并事件。您可以使用 setCoalesce(false),但我还没有尝试过。此外,您可以将您正在做的事情与此 example 进行比较。 ;尽管它为较少的粒子设置动画,但它会显示绘画所花费的时间并允许调整帧速率。

关于java swing 定时器...叹息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4114908/

相关文章:

java - 如何显示/隐藏 jsf 组件

java - 打印 JTable 中选定的行

java - 如何编写 contains 表达式 - Java Selenium

java - Libgdx:FitViewPort 不工作

java - 在 JPanel 中显示 JPanel 数组

Java从另一个线程更新jtable行

Java Swing GUI 主题

java - 为 3 个对象设置动画

java - JSF 中的支持 bean String[] 访问

java - Jackson 注册自定义 json 序列化器