我已经搜索了这个问题,但是每个人似乎都遇到图形更新太慢的问题。
陈述我的情况:
我有一个JFrame,我使用兼容的显示模式设置为全屏。 在JFrame中我有几个JPanel和JButtons ...... 在其中一个JPanels上,我正在绘制需要更新的移动对象。
我正在更新这样的图形:验证并重新绘制JFrame,然后重新验证并重新绘制相应的JPanel。 图形更新速度太快。 (我需要提一下,在JPanel上我重写了paintComponent方法)。 我曾尝试在JFrame上使用BufferStrategy,但这会阻止我显示JPanels和JButton(不知道为什么)。
如果你能明确区分绘画,验证,重新绘制,重新验证,无效等等,我也会抓住这个机会向你们中的一些人询问......所有的教程几乎都没有表面。
答案 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