JFrame Container.add 方法 class 参考
JFrame Container.add method class reference
我偶然发现了一个名为 "Learn Coding from Scratch" 的 youtube 频道制作的简单 PacMan 游戏。代码中有 3 个 class 文件,分别是 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 中引用当前 class 的 JPanel 和 JFrame 示例。您只是用“.add”而不是当前的 class 添加按钮、标签等?此外,我还检查了 Oracle 文档中的 Container.add 方法,但基本上您可以在其中放置任何内容,这对我没有太大帮助。你们能看看这个吗?
提前致谢。
P.s。我知道我发布的大部分代码都是多余的,但无论如何有人会要求完整的代码:)
你的 class Level1 extends JPanel
。这意味着它是一个JPanel
。名为 window
的对象是一个 JFrame。通过写
window.add(this);
在 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);
}
}
我偶然发现了一个名为 "Learn Coding from Scratch" 的 youtube 频道制作的简单 PacMan 游戏。代码中有 3 个 class 文件,分别是 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 中引用当前 class 的 JPanel 和 JFrame 示例。您只是用“.add”而不是当前的 class 添加按钮、标签等?此外,我还检查了 Oracle 文档中的 Container.add 方法,但基本上您可以在其中放置任何内容,这对我没有太大帮助。你们能看看这个吗? 提前致谢。 P.s。我知道我发布的大部分代码都是多余的,但无论如何有人会要求完整的代码:)
你的 class Level1 extends JPanel
。这意味着它是一个JPanel
。名为 window
的对象是一个 JFrame。通过写
window.add(this);
在 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);
}
}