我目前有一个重新绘制的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();
}
}
但这不起作用,因为我认为定时器需要运行。