我写了这个简短的类,应该添加一个“玩家”的对象
 类,其中包含已实现的KeyListener,但似乎addKeyListener()缺少一些内容;方法。

import java.awt.*;

import javax.swing.*;

public class Titlescreen {

    private Player player;

    public void init()
    {
        player = new Player();
        this.addKeyListener(player);
    }


    public void tick()
    {
        player.tick();
    }

    public void paint()
    {

    }

}

最佳答案

您的Titlescreen没有addKeyListener(...)方法,并且不扩展任何具有该方法的类,因此编译器正确地抱怨您正在调用该类不存在的方法。

您有几种选择:


给Titlescreen一个addKeyListener(...)方法,但是您必须弄清楚方法主体应该具有什么,即,您将把KeyListener添加到方法主体内部的内容是什么。
让Titlescreen扩展一个Swing组件,例如JPanel,它具有自己的addKeyListener(...)方法。我猜这是您想要执行的操作,但是忘记了执行此操作,但是鉴于您到目前为止已发布的信息,我不确定。请注意,如果您这样做了,则当希望KeyListener起作用时,您需要确保被侦听的组件是1)可聚焦的,并且2)具有应用程序的焦点。
只需摆脱您的this.addKeyListener(...)方法调用即可。最重要的是您甚至拨打此电话的原因,也许可以做得更好。

08-05 19:53