我已经搜查了问题,但大家似乎都与显卡更新速度太慢的问题。
至今我的情况:
我有一个JFrame我设置为全屏,通过使用兼容的显示模式。 在JFrame中我有一对夫妇JPanels和Jbutton将的...在JPanels我画的移动需要被更新的对象之一。
我更新显卡这样的:验证并重新绘制的JFrame,然后重新验证并重新绘制相应的JPanel。 图形的更新速度太快。 (我需要一提的是在JPanel的,我重写的paintComponent方法)。 我曾尝试使用BufferStrategy中的JFrame的,然而,这会阻止我展示JPanels和Jbutton将(不知道为什么)。
我也借此机会向问一些你们的,如果你能得到油漆有明显的区别,验证,重新绘制,重新验证,废止,等...所有的教程勉强划伤表面。
“定时机制仅仅是用于使用System.timeCurrentMillis计数该5分钟运行一个循环”
这是行不通的。 循环最终挡住了绘画发生,直到循环完成后,如果没有延迟。
我建议你考虑使用一个javax.swing.Timer
的动画。 你可以看到更多的在如何使用Swing计时器
的基本构建体Timer
是如下
Timer ( int delayInMillis, ActionListener listener )
其中delayInMillis
是毫秒“滴答”和之间拖延时间listener
提供actionPerformed
被称为每delayInMillis
毫秒。 所以,最后你做这样的事情
Timer timer = new Timer (40, new ActionListener(){
public void actionPerformed(ActionEvent e) {
for (Ball ball: balls) {
ball.move();
repaint();
}
}
});
你可以看到一个完整的例子在这里