GWT - AbsolutePanel和ProvideResize + RequiresResize

时间:2013-02-06 17:03:44

标签: gwt

我尝试将ProvidesResize接口实现为com.google.gwt.user.client.ui.AbsolutePanel。然后我对其假定的孩子实施了RequiresResize,但似乎方法onResize()无法被调用或者我没有得到它:(

所以我的问题是......如何捕获是否重新调整了AbsolutePanel子窗口小部件,是否可以?

P.S。 GWT 2.2 / 2.3

3 个答案:

答案 0 :(得分:2)

您的小组本身可以实现RequiresResize界面并让onResize()方法执行类似的操作(从DeckLayoutPanel复制):

  public void onResize() {
    for (Widget child : getChildren()) {
      if (child instanceof RequiresResize) {
        ((RequiresResize) child).onResize();
      }
    }
  }

现在,如果您让小组成为ProvidesResize小部件的子级,则onResize()调用链应该通过您的面板传播到小组的子级。

答案 1 :(得分:1)

HTML只会在某些内容发生变化时告诉您。主要的无赖。

当窗口改变大小时,你会发现什么。 RootLayoutPanel侦听窗口大小更改事件。当它听到一个时,它告诉所有的孩子,“嘿,你可能只是改变了尺寸。看看它。”然后所有这些孩子都应该告诉所有他们的孩子,“嘿,检查你的体型,伙计。可能会有所不同。”

因此。实现AbsolutePanel的{​​{1}}必须以某种方式挂钩到此过程中。如果您将其添加到ProvidesResize,则可以通过 实施RootLayoutPanel来获取消息。如果您不将其添加到RequiresResize链中,则必须以某种方式自行查找调整大小信息。您可以监听窗口大小事件,也可以在知道布局中更改了其他内容时触发大小计算。任何你想要的。不幸的是,除非您有RootLayoutPanelRequiresResize个小工具连续到ProvidesResize,否则无法为您完成此工作。

答案 2 :(得分:1)

您可以执行与this

类似的操作