Java图形更新太快

时间:2014-04-27 03:26:05

标签: java swing animation graphics

我已经搜索了这个问题,但是每个人似乎都遇到图形更新太慢的问题。

陈述我的情况:

我有一个JFrame,我使用兼容的显示模式设置为全屏。 在JFrame中我有几个JPanel和JButtons ...... 在其中一个JPanels上,我正在绘制需要更新的移动对象。

我正在更新这样的图形:验证并重新绘制JFrame,然后重新验证并重新绘制相应的JPanel。 图形更新速度太快。 (我需要提一下,在JPanel上我重写了paintComponent方法)。 我曾尝试在JFrame上使用BufferStrategy,但这会阻止我显示JPanels和JButton(不知道为什么)。

如果你能明确区分绘画,验证,重新绘制,重新验证,无效等等,我也会抓住这个机会向你们中的一些人询问......所有的教程几乎都没有表面。

1 个答案:

答案 0 :(得分:0)

  

“计时机制只是一个运行5分钟的循环,使用System.timeCurrentMillis来计算”

那不行。如果没有延迟,循环最终会阻止绘画发生,直到循环完成。

我建议您考虑使用javax.swing.Timer作为动画。您可以在How to Use Swing Timers

查看更多信息

Timer的基本结构如下

Timer ( int delayInMillis, ActionListener listener )

其中delayInMillis是在“ticks”之间延迟的时间(以毫秒为单位),而listener提供actionPerformed,每delayInMillis调用一次Timer timer = new Timer (40, new ActionListener(){ public void actionPerformed(ActionEvent e) { for (Ball ball: balls) { ball.move(); repaint(); } } }); 毫秒。所以最终你会做类似

的事情
{{1}}

您可以看到完整的示例here

enter image description here