Java的图形更新太快(Java Graphics Updating Too Fast)

2019-10-28 08:58发布

我已经搜查了问题,但大家似乎都与显卡更新速度太慢的问题。

至今我的情况:

我有一个JFrame我设置为全屏,通过使用兼容的显示模式。 在JFrame中我有一对夫妇JPanels和Jbutton将的...在JPanels我画的移动需要被更新的对象之一。

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

我也借此机会向问一些你们的,如果你能得到油漆有明显的区别,验证,重新绘制,重新验证,废止,等...所有的教程勉强划伤表面。

Answer 1:

“定时机制仅仅是用于使用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();
        }
    }
});

你可以看到一个完整的例子在这里



文章来源: Java Graphics Updating Too Fast