我偶然发现了一个简单的 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 我知道我发布的大部分代码都是多余的,但无论如何有人会要求提供整个代码:)
1 回答
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
你的课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);
}
}
添加回答
举报
0/150
提交
取消
