试图了解关闭的小部件或 "closed" 小部件的去向?

Trying to understand closed widgets or Where "closed" widgets goes?

我正在尝试归档一个可关闭的 Composite 自定义小部件。我正在研究 Window、Page 和 TabView 类。

Window 中的 close() 方法基本上只是隐藏小部件,TabView 监听 close 页面事件,然后调用 remove(page) 方法,这删除了 ​​page 来自内部 pane,但我没有找到一种 page.close()。那么,关闭的寡妇和页面发生了什么?还存在吗? 我自己的 close() 方法必须调用 hide() 方法并触发 close 事件,就像 Window 一样?这不携带一些内存泄漏?

小部件在您调用 widget.destroy() 之前一直可用,但在此之前您可以自由地隐藏它们或将它们从其父容器中删除。一旦将它们从一个容器中移除,您就可以重新使用它们并将它们一起添加到另一个容器中——在 IE6 时代,这是一个常见的要求,因为将未使用的小部件移动到池中并重新使用它们比创建一个新的容器更快一个从头开始(小部件将保留它的 DOM 元素,直到它被销毁)。

Window 中的 close() 方法实际上只是使用 Window 语义的一部分——它真正做的就是删除或隐藏 Window 小部件和触发一个事件,所以 close()open()(几乎)只不过是 API 糖,让用户的生活更轻松。

OTOH Page 不需要 close() 方法,因为从 TabView 添加和删除页面是整个概念。