java – 什么是JPanel,JFrame,JLayeredPane和JRootpane
我是
java新手,在阅读时我遇到了各种框架和面板,JFrame,JLayeredPane,JRootPane和JPannel之间的混淆是什么,它们之间的差异是可以在单个类中同时使用JFrame和JPanel.
解决方法
看看这里的图片
?从the German Java Tutorial page. 一些细节 > JFrame是窗口,显示为操作系统的顶级窗口. The official Swing tutorial很好地总结了设计. 让我们做一个最小的例子: import javax.swing.JFrame; public class SomeFrame { public static void main(String [] as) { // let's make it as simple as possible JFrame jFrame = new JFrame("Hi!"); jFrame.setVisible(true); } } 上面的代码会生成一个Frame,但不是真的可用: 让它变大一点,只是为了揭示标题: JFrame jFrame = new JFrame("Hi!"); jFrame.setSize(200,50); jFrame.setVisible(true); 结果: 现在,让我们看看是否可以在框架中添加任何组件.让我们添加一个标签 – 在Swing中它是由JLabel类实现的: JFrame jFrame = new JFrame("Hi!"); jFrame.setSize(200,100); JLabel label = new JLabel("Hello Swing!"); jFrame.add(label); jFrame.setVisible(true); 好的,我们做了什么?将JLabel添加到JFrame中.如果您将查看Swing代码,JFrame.add()方法在内部将组件添加到ContentPane中.所以上面的代码相当于: JFrame jFrame = new JFrame("Hi!"); jFrame.setSize(200,100); JLabel label = new JLabel("Hello Swing!"); jFrame.getContentPane().add(label); // <---- jFrame.setVisible(true); 您可以自己检查ContentPane是否由JPanel内部实现.它在Swing代码中: // this invocation... JFrame jFrame = new JFrame("Hi!"); // effectively invokes following methods: public JFrame(String title) throws HeadlessException { // ... frameInit(); } protected void frameInit() { // ... setRootPane(createRootPane()); // ... } protected JRootPane createRootPane() { JRootPane rp = new JRootPane(); // ... } public JRootPane() { setGlassPane(createGlassPane()); setLayeredPane(createLayeredPane()); setContentPane(createContentPane()); // ... } protected Container createContentPane() { JComponent c = new JPanel(); // <---- // ... return c; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |