我正在学习使用 Java 进行游戏开发。这是我学会的初始化附加到 JFrame 的 JPanel 的 2 种方法。两者有什么区别,哪个更正确?
请注意,在方法 1 中,Skeleton 不扩展 JFrame。在方法 2 中是这样。
方法一:
Board.java
public class Board extends JPanel {
public Board() {
setPreferredSize(new Dimension(300, 280));
}
}
骨架.java
public class Skeleton {
public static void main(String[] args) {
JFrame window = new JFrame("Skeleton");
window.setContentPane(new Board());
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.pack();
window.setVisible(true);
}
}
方法二:
Board.java
public class Board extends JPanel {
public Board() {}
}
骨架.java
public class Skeleton extends JFrame {
public Skeleton() {
add(new Board());
setTitle("Skeleton");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 280);
setLocationRelativeTo(null);
setVisible(true);
setResizable(false);
}
public static void main(String[] args) {
new Skeleton();
}
}
最佳答案
基本上,如果您希望您的骨架类只是一个 JFrame,您可以扩展它。如果您希望它具有其他功能,您需要让该类包含 JFrame 对象,就像在您的“方法 1”中一样。这两种方法的工作方式相同(就作为 JFrame 对象进行操作而言),但这取决于您要在应用程序中执行的操作。扩展 JFrame 将限制您可以做的事情(即调用某些方法),但如果它仅作为 JFrame 运行,那无论如何都没有关系。
关于java - 使用 JPanel 初始化 JFrame 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21343942/