第五节 关于WindowManager的一些话
JFace包含一个叫WindowManager的类[2],它并不会控制窗口的外观,也不会管理用户和窗口的交互,而是将窗口编组,这样你就可以迭代的访问它们或者将它们整组的关闭。WindowManager的实例拥有窗口,也可以同时可选的拥有其他WindowManager的实例。WindowManager提供了两种构造函数,在表13-1中列出:
构造函数 | 描述 |
---|---|
WindowManager() | 构造一个根窗口管理器(也就是没有父亲的窗口管理器) |
WindowManager(WindowManager parent) | 构造一个窗口管理器,作为一个父亲窗口管理器的的孩子 |
绝大多数WindowManager的方法只对它自己产生效果,除了close()方法会一连串影响到它所有的孩子WindowManger。表13-2列出了WindowManager的方法。
方法 | 描述 |
---|---|
void add(Window window) | 将window表示窗口添加到这个WindowManager中 |
boolean close() | 关闭属于这个WindowManager的所有窗口,以及属于它所有孩子WindowManager的窗口。当任何一个窗口关闭失败时,停止关闭并且返回false,否则返回true |
int getWindowCount() | 返回属于这个WindowManager的窗口的数目 |
Window[] getWindows() | 返回一个数组,其元素是属于这个WindowManager的所有的窗口 |
void remove(Window window) | 将window表示的窗口从这个WindowManager中移去 |
使用WindowManager时,构造一个实例,添加你的窗口,然后适当的调用它的方法。下面的代码创建了一个WindowManager,向里面加入了三个窗口,然后把它们全都关闭,如果关闭失败的话则打印一个诊断信息:
WindowManager wm = new WindowManager(); wm.add(windowOne); wm.add(windowTwo); if (!wm.close()) System.err.println("Windows failed to close");
[2] 译注:原文是JFace includes a class called WindowManager, which isn't a drop-in for IceWM, sawfish, or Enlightenment.