sat*_*nam 27 java oop inheritance swing composition
在使用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);
................
}
Run Code Online (Sandbox Code Playgroud)
和
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);
}
}
Run Code Online (Sandbox Code Playgroud)
Hov*_*els 29
思考:
getX()和getY()方法,以明白我的意思!).And*_*son 18
更喜欢继承的组合.
第二个例子使用继承,但没有充分的理由,因为它不会改变它的功能JFrame.
顺便说一句,如果这些是你看到的代码示例,请找一个新的源代码1补充.即使在显示的少数代码行中,每个代码行都是非常值得怀疑的.例如
getContentPane().setBackground(Color.WHITE);
getContentPane().setLayout(null);
setSize(800, 600);
getContentPane()自Java 1.5以来,第一行()的第一部分没有必要null布局,这将以我可以计算或描述的更多方式打破.pack();JFrame guiFrame = new JFrame();
guiFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
guiFrame.setTitle("Example GUI");
guiFrame.setSize(300,250);
JFrame guiFrame = new JFrame("Example GUI");guiFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);Mad*_*mer 10
就个人而言,第一种方法(创建一个实例JFrame)是首选,我更喜欢这个因为......
它不会将您的应用程序锁定到专用容器中...您会看到很多人想要将applet添加到框架和框架到applet,如果他们已经将大部分GUI放在一个GUI中JPanel,他们就不会有这些问题.
这也意味着您创建的UI更加灵活.例如,您可以在当前应用程序或将来的应用程序中重复使用它,而不是锁定自己.
我延伸的主要抱怨JFrame是,你实际上并没有添加任何新功能或功能,除了使用之外,它可以有效地重复使用setVisible
我延伸的另一个问题JFrame是人们然后迅速覆盖paint,这真的非常糟糕.这样做有很多问题,不得不反复列出它们真的很痛苦......
所以...价值2美分以上.创建一个实例JFrame并将其添加到其中.如果需要,创建一个static方法调用showMyAwesomeGUI,为您完成...