7.8 顶层容器
Swing的3个顶层容器类:
JFrame、JApplet、JDialog;
都是重量级组件,分别继承了AWT组件的Frame、Applet、Dialog;
每个顶层容器都有一个内容面板,通常直接或间接的容纳别的可视组件;
可以有选择地为顶层容器添加菜单,菜单被放置在顶层容器上,但是在内容面板之外;
通过静态方法show xxx Dialog可以产生四种简单的对话框:它们的方法参数中绝大部分(除了输入对话框可以不指定父窗口)都需要提供一个父窗口组件ParentComponent,只有关闭这些简单的对话框后,才可以返回到其父窗口,也就是说它们绝大部分是模态的;
7.9 中间层容器
JRootPane的层次结构:
JPanel:
默认状态下,除了背景色不绘制任何东西;
可以很容易地为它设置边框和绘制特性,有效利用JPanel可使版面管理更容易;
可以使用布局管理器规划它容纳的组件的位置和大小(可以通过setLayout方法改变布局;可以在创建JPanel对象时为它确定布局方式,默认使用FlowLayout布局(一行));
JScrollPane:
容器有滚动条,通过拖动滑块可以看到更多内容;
由9个部分组成,包括一个中心显示地带、四个角和四条边;
JSplitPane:
可以把两个组件显示在两个显示区域内,且随着区域间分隔线的拖动,区域内组件大小随之变动;
允许设置水平或垂直分割,允许设置动态拖曳功能;
通常先把组件放到ScrollPane中,再把ScrollPane放到SplitPane中,实现每部分滚动条;
JTabbedPane:
如果一个窗口的功能有几项,可以给每项设置一个标签,标签下面包含若干专用组件;
JToolBar:
将常用功能以工具栏方式呈现;
JInternalFrame:
实现在一个主窗口中打开很多个文档,每个文档各自占用一个新窗口;
JInternalFrame使用和JFrame几乎一样,可以最大化、最小化、关闭窗口、加入菜单;
JInternalFrame是轻量级组件,只能是中间容器,必须依附于顶层容器上;
通常将internal frame加入JDesktopPane类的对象来方便管理,JDesktopPane继承自JLayeredPane,用来建立虚拟桌面,可以显示并管理众多internal frame之间层次关系;