【问题标题】:GWT panels and widgetsGWT 面板和小部件
【发布时间】:2012-05-09 12:14:24
【问题描述】:

下面总结一下GWT面板和小部件之间的基本关系是否安全?

  • GWT 面板被转换为可以包含子面板或/和子小部件的父 DOM 节点。
  • GWT 小部件被转换为一个叶 DOM 节点,该节点仅是自包含的。
  • GWT RootPanel 必须单独充当所有其他面板和小部件的根容器。

【问题讨论】:

    标签: gwt


    【解决方案1】:

    这是 GWT 层次结构:

    面板也是一个小部件。面板是可以包含其他小部件和面板的小部件。通常,它们用于布局,并且很少有直接与它们关联的数据 - 例如,DisclosurePanel 可以在标题和 TabPanel 的选项卡中包含数据。有些基于 HTML table 元素(例如 HorizontalPanel),有些基于标签 div

    RootPanel 是包含其他小部件的面板。此面板位于包含层次结构的顶部。默认它包装主机页面的标签body。 RootPanel 可以包含任意数量的小部件,这些小部件将以其自然的 HTML 顺序排列。

    docs

    【讨论】:

      【解决方案2】:

      每个 GWT Widget 实例都有一个元素(可通过调用 getElement() 访问),而面板只是一种 Widget——它们仍然有一个基本元素。大多数小部件构建更多内容来完成它们的工作(例如:CheckBox 是一个span,同时具有一个input 和一个label),并且面板可能还需要多个元素。

      小部件被附加到其他小部件不仅是因为这是 DOM 需要排列的方式,而且还用于跟踪从 DOM 中附加和分离小部件。除此之外,这使得只有在实际附加时才连接事件处理程序成为可能,并在不再是页面的一部分时取消连接。

      RootPanel 是一个特殊的小部件,它表示现有元素,可以是主体本身,也可以是具有给定 ID 的元素。可能有多个 RootPanel,但它们不应该嵌套。 (也就是说,可能只有一个 RootLayoutPanel,一种专门的 RootPanel,它还处理将浏览器大小信息传递给子布局面板)。

      这可能与您所追求的想法相同,但我想澄清一下,Widget 通常不仅仅是一个 DOM 节点。

      【讨论】:

        猜你喜欢
        • 2012-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多