JFrame Container.add 方法类参考

我偶然发现了一个简单的 PacMan 游戏,它是由 youtube 上一个名为“Learn Coding from Scratch”的频道制作的。代码中有3个类文件,分别是Player、Level1和Executable。这是Level1的代码;


public class Level1 extends JPanel implements KeyListener{


    private JFrame window = new JFrame("PacMan");

    private ImageIcon background = new ImageIcon("images//background.jpeg");

    private Player player = new Player(5, 10, 10, "images//pacman_right.jpg", true, 0); 

    private int speed = 10;


    public Level1() {


        this.setFocusable(true);

        this.addKeyListener(this);

        **window.add(this);**


        window.setSize(940, 627);

        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        window.setVisible(true);

}

    public void paint(Graphics g) {

        g.drawImage(background.getImage(), 0, 0, null);

        player.drawPlayer(g);

    }

我不明白的是“window.add(this)”。我从未见过必须引用 JFrame 中的当前类的 JPanel 和 JFrame 示例。您只是用“.add”而不是当前类添加按钮、标签等?此外,我检查了 Container.add 方法的 Oracle 文档,但基本上你可以在里面放任何东西,这对我没有多大帮助。你们能看看这个吗?提前致谢。Ps 我知道我发布的大部分代码都是多余的,但无论如何有人会要求提供整个代码:)


慕工程0101907
浏览 160回答 1
1回答

天涯尽头无女友

你的课Level1 extends JPanel。这意味着它是一个JPanel. 命名的对象window是一个 JFrame。通过写作window.add(这个);在Level1的构造函数中,您将this JPanel添加到框架中。您以前从未见过它,因为最常见的做法是extends创建一个 JFrame,然后创建面板并添加它们,如下所示: this.add(myPanel); //this refers to a frame, mypanel refers to a JPanel为了更清楚,看一下最常见的做法并与您的比较:public class PacmanFrame extends JFrame {    public PacmanFrame() {        //this refers to our class, extending JFrame        JPanel myPanel = new JPanel();        this.add(myPanel);    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java