面板panel与窗口frame的区别
都可以在其上加载组件
面板需要加载在组件上才能使用,而窗口不需要
JPanel和JFrame都可以作为容器存放别的控件
但JPanel一般作为中间容器,达到包装分块的目的
JFrame作为最高级父容器包含全部控件
JRootPane根面板:该面板是在JFrame窗体创建时就默认添加进来的,是所有其他面板的载体或父级,他覆盖窗体的除标题栏和边条之外的整个表面。根面板默认是不可见的。根面板负责管理其他面板(层面板,玻璃面板),如使其他面板覆盖整个JFrame窗体等。
JLayeredPane层面板:该面板是其他所有面板的父级,在JRootPane面板的上面,他再次覆盖窗体的整个表面,内容面板和JMenuBar菜单栏被添加到层面板上。当添加了菜单栏时,菜单栏被添加到JLayeredPane面板的顶部,剩下的部分被内容面板填充。层面板是分很多层的,每一层使用一个相应的数字来表示,而内容面板就位于层面板中的某一层,在后面的内容中我们可以看到层面板可以让你设计出相互重叠的内部窗体,层面板将负责管理各种内部窗体的叠放问题,对于层面板的每一层都相当于是一个容器,因此可以直接向层面板中添加组件。
containPane内容面板:内容面板是层面板中的某一层。默认的内容面板是不透明的,且为一个JPane对象。该面板在窗体中起着工作区的作用,当我们向窗体添加组件时就应该添加到这一层上,而不能像AWT那样直接添加到窗体上,若你那样做了,实际上该组件也是被添加到内容面板上的,若窗体未设置内容面板,则组件无法显示。比如要添加按钮jb则正确的方式为,Container p=jframe.getContentPane(); p.add(jr); 或jframe.getContentPane().add(jr); 其中getContentPane()是JFrame类中的方法,该方法将反回内容面板的引用,这是访问默认的内容面板的方法,因为默认的内容面板没有特定的名字,因此应使用该方法。
glassPane玻璃面板:该面板总是存在的,而且他位于最上面,默认情况下玻璃面板是不可见的,玻璃面板用于接收鼠标事件和在其他组件上绘图。