在使用 Swing 制作应用程序时,我见过人们执行以下两件事之一来创建 JFrame。哪种方法更好?为什么?
我是 Java 和编程的初学者。我唯一的学习来源是书籍、YouTube 和 Stack Overflow。
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);
................
}
AND
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()
and getY()
方法看看我的意思!)。
- 如果您使用 IDE,请避免继承复杂类:如果您重写复杂类,那么当您调用这些类的对象上的方法时,您将有很多、太多的方法可供选择。
- 封装性很好,并且允许创建更安全的代码。只曝光需要曝光的部分,并尽可能控制曝光。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)