我尝试将ProvidesResize接口实现为com.google.gwt.user.client.ui.AbsolutePanel。然后我对其假定的孩子实施了RequiresResize,但似乎方法onResize()无法被调用或者我没有得到它:(
所以我的问题是......如何捕获是否重新调整了AbsolutePanel子窗口小部件,是否可以?
P.S。 GWT 2.2 / 2.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
链中,则必须以某种方式自行查找调整大小信息。您可以监听窗口大小事件,也可以在知道布局中更改了其他内容时触发大小计算。任何你想要的。不幸的是,除非您有RootLayoutPanel
和RequiresResize
个小工具连续到ProvidesResize
,否则无法为您完成此工作。
答案 2 :(得分:1)
您可以执行与this
类似的操作