在使用 Swing 制作应用程序时,我看到人们使用两种方法之一来创建 JFrame。哪种方法更好?为什么?
我是 Java 和编程的初学者。我唯一的学习来源是书籍、YouTube 和 StackOverflow。
import {imports};
public class GuiApp1 {
public static void main(String[] args) {
new GuiApp1();
}
public GuiApp1() {
JFrame guiFrame = new JFrame();
guiFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
guiFrame.setTitle("Example GUI");
guiFrame.setSize(300,250);
................
}
与
import {imports};
public class GuiApp1 extends JFrame {
public Execute() {
getContentPane().setBackground(Color.WHITE);
getContentPane().setLayout(null);
setSize(800, 600);
.............
}
public static void main(String[] args) {
Execute frame1 = new Execute();
frame1.setVisible(true);
}
}
最佳答案
想法:
- 避免扩展 JFrame,因为它会将您的 GUI 与 JFrame 联系在一起。相反,如果您专注于创建 JPanel,那么您可以在任何需要的地方自由使用这些 JPanel - 在 JFrame、JDialog 或 JApplet 中,或在另一个 JPanel 内部,或通过 CardLayout 与其他 JPanel 交换。
- 一般避免继承,尤其是复杂类。这将防止有害错误,例如无意的方法覆盖(尝试创建具有
getX()
和getY()
方法的 JFrame 或 JPanel 以了解我的意思!) . - 如果您使用 IDE,请避免继承复杂类:如果您重写一个复杂类,当您调用这些类的对象上的方法时,您将有太多太多的方法选择提供给您。
- 封装很好,可以创建更安全的代码。只曝光需要曝光的部分,并尽可能控制曝光。
关于java - 扩展 JFrame 与在程序中创建它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22003802/