如何在更改后使用Timer重绘?

时间:2014-12-03 04:11:22

标签: java user-interface timer paint

我目前有一个重新绘制的GUI程序,但它没有实现Timer,因此它在CPU的每个时钟重新绘制(这使我的CPU占用率达到65%)。我已经看到提到Timer可以通过安排在您选择的许多刻度之后运行的任务来解决此问题。但是,我不确定如何将它实现到我的程序中。我的程序目前看起来与此类似:

public static void main(String[] args)
{
    // create new Jframe
    JFrame frame = new JFrame("Game");
    frame.add(new Game());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500,500);
    frame.setVisible(true);

    while (1 == 1)
    {
        frame.repaint();
    }
}

paint方法处理游戏的各个部分,例如移动。例如,如果单击一个前进按钮,GUI将重新绘制,玩家向上移动一个。当我搜索Timer的示例时,它在我的程序中没有的run()方法中使用。 Timer是否已在类的正文中实现(例如在paintComponent()方法内),然后在main()内运行?

我尝试过使用这样的东西:

paintComponent()
{
    // everything that it does
    Timer updater = new Timer(1);
}

public static void main(String[] args)
{
    // create new Jframe
    JFrame frame = new JFrame("Game");
    frame.add(new Game());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500,500);
    frame.setVisible(true);

    while (1 == 1)
    {
        new Timer(1);
        frame.repaint();
    }
}

但这不起作用,因为我认为定时器需要运行。

0 个答案:

没有答案