JRootPane:根面板,在建立JFrame时就默认加进来了,覆盖除边框之外的整个表面,其余面板均在它之上,由它管理,默认可见不透明。
JLayeredPane:建立在JRootPane面板上,其上有菜单栏JMenuBar和内容面板containPane,菜单栏JMenuBar在JLayeredPane面板的顶部。对于层面板上的多层,只能把某种容器(比如JPanel)设置为内容面板层,层面板中的其他层都不能设置。使层面板可见用setOpaque()。
containPane:内容面板,向窗体中添加的所有组件都是添加到containPane中的,如果组件未添加到此层,就不会显示了。jframe.getContenPane.add(jpanel)相当于jframe.add(jpanel),其中getContentPane是返回内容面板的引用,默认可见不透明,我们看到的就是内容面板的内容。
内容面板默认在层面板的-30000层,向层面板添加组件要添加在这一层。
层面板中只有内容面板是不透明的,所以给层面板添加背景色相当于就是添加内容面板的背景色。
JPanel jp = (JPanel) this.getContentPane();
this.setContentPane(jp);
jp.setOpaque(false);
ImageIcon img = new ImageIcon("image/login.jpg");
JLabel lb = new JLabel(img);
lb.setBounds(0, 0, this.getWidth() - 5, this.getHeight() - 10);
this.getLayeredPane().add(lb, new Integer(Integer.MIN_VALUE));
glassPane:该面板位于最上层,默认透明不可见。若将某一容器(比如JPanel)设为玻璃面板,它仍是不可见的,但它不是透明的,这取决于该容器是否是透明的、
//获取玻璃面板
JPanel jp = (JPanel)getGlassPane();
jp.setVisible(true);
本文深入探讨了Java GUI编程中的关键概念,包括JRootPane、JLayeredPane、内容面板(containPane)和玻璃面板(glassPane)的使用与特性。详细解释了如何在JFrame中利用这些面板来组织和展示UI元素,并通过实例展示了如何在层面板上添加透明背景和自定义组件。同时,介绍了玻璃面板的概念及其在GUI设计中的应用。
2295

被折叠的 条评论
为什么被折叠?



