有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

坚持使用Java Swing计时器

我在画布上创建了一个小矩形,它位于JFrame上。我把这门课变成了一个单身学生(我知道你们中的一些人会说这是一个坏习惯,但我同意)。我目前只是在按下箭头键时使用repaint()方法。然而,我现在正在考虑用一个摆动计时器来制作一个游戏循环

我创建了一个名为“GameLoop.java”的类,并添加了以下代码

public class GameLoop implements ActionListener {


    Timer timer = new Timer(10, this);

    public void actionPerformed(ActionEvent e) {

        timer.start();
        GameCanvas.getInstance().repaint();

    }
}

但是,当按下箭头时,这对屏幕没有任何影响。我有什么遗漏/做错了吗


共 (1) 个答案

  1. # 1 楼答案

    actionPerformed(ActionEvent e)仅在计时器启动后调用,因此不能用于启动计时器
    你需要从别处开始。例如:

    public class GameLoop implements ActionListener {
    
        GameLoop() {
            Timer timer = new Timer(10, this);
            timer.start();
        }
    
        public void actionPerformed(ActionEvent e) {
            GameCanvas.getInstance().repaint();
        }
    }