Java 使用JPanel初始化JFrame的正确方法
我正在学习Java的游戏开发。下面是我学会的初始化连接到JFrame的JPanel的两种方法。两者之间有什么区别,哪一个更正确 请注意,在方法1中,骨架不扩展JFrame。在方法2中是这样的 方法1: Board.javaJava 使用JPanel初始化JFrame的正确方法,java,swing,jframe,jpanel,Java,Swing,Jframe,Jpanel,我正在学习Java的游戏开发。下面是我学会的初始化连接到JFrame的JPanel的两种方法。两者之间有什么区别,哪一个更正确 请注意,在方法1中,骨架不扩展JFrame。在方法2中是这样的 方法1: Board.java public class Board extends JPanel { public Board() { setPreferredSize(new Dimension(300, 280)); } } public class Skeleton
public class Board extends JPanel {
public Board() {
setPreferredSize(new Dimension(300, 280));
}
}
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);
}
}
public class Board extends JPanel {
public Board() {}
}
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();
}
}
Skeleton.java
public class Board extends JPanel {
public Board() {
setPreferredSize(new Dimension(300, 280));
}
}
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);
}
}
public class Board extends JPanel {
public Board() {}
}
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();
}
}
方法2:
Board.java
public class Board extends JPanel {
public Board() {
setPreferredSize(new Dimension(300, 280));
}
}
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);
}
}
public class Board extends JPanel {
public Board() {}
}
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();
}
}
Skeleton.java
public class Board extends JPanel {
public Board() {
setPreferredSize(new Dimension(300, 280));
}
}
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);
}
}
public class Board extends JPanel {
public Board() {}
}
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运行,那也没关系。您应该搜索继承。当类别A扩展类别B时,类别A就是类别B 例如,如果我制造一辆普通车,然后制造一辆普通宝马,那么宝马延伸普通车是合乎逻辑的,因为宝马是一辆汽车。BMW继承了class car中的所有方法,因为从逻辑上讲,BMW可以做标准车可以做的事情。然而,BMW可能能够制造额外的东西,这就是为什么您可以重写方法并在BMW类中编写新方法,只有BMW类可以使用(以及继承BMW的任何类)。 方法重写是从子类(类BMW)中的超类(类Car)重写一个方法,子方法的头应该与超级方法的头完全相同,但方法可以做不同的事情。 在第一个类中,骨架不是JFrame,而在第二个类中,骨架是JFrame