首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onResize不调用

onResize不调用
EN

Stack Overflow用户
提问于 2011-12-13 10:49:07
回答 1查看 1.5K关注 0票数 0

如何编写对调整大小作出反应的小部件?

以下内容不起作用。onResize()在开始时只调用一次。后者更改浏览器窗口大小并不会导致调用此方法,尽管DIVs被调整了大小。

代码语言:javascript
复制
public class MyWidget extends SimpleLayoutPanel {

private Label label;

public MyWidget() {
    label = new Label("A");
    add(label);
}

@Override
public void onResize() {
    super.onResize();
    int width = label.getElement().getClientWidth();
    int height = label.getElement().getClientHeight();
    int fontsize = (width>height?height:width);
    if( fontsize > 0 ) {
        DOM.setStyleAttribute(label.getElement(), "font-size", Integer.toString(fontsize)+"px");
    }
}

}

和主模块

代码语言:javascript
复制
public void onModuleLoad() {

    MyWidget myWidget = new MyWidget();
    DOM.setStyleAttribute(myWidget.getElement(), "position", "fixed");
    DOM.setStyleAttribute(myWidget.getElement(), "top", "0px");
    DOM.setStyleAttribute(myWidget.getElement(), "left", "0px");
    DOM.setStyleAttribute(myWidget.getElement(), "bottom", "0px");
    DOM.setStyleAttribute(myWidget.getElement(), "right", "0px");

    RootPanel rootPanel = RootPanel.get();
    rootPanel.add(myWidget);


}

更新1

基于ResizComposite的版本也不起作用。在这种情况下,onResize根本没有调用。

代码语言:javascript
复制
public class MyWidget extends ResizeComposite  {

private Label label;

public MyWidget() {
    label = new Label("A");
    DOM.setStyleAttribute(label.getElement(), "position", "fixed");
    DOM.setStyleAttribute(label.getElement(), "top", "0px");
    DOM.setStyleAttribute(label.getElement(), "left", "0px");
    DOM.setStyleAttribute(label.getElement(), "bottom", "0px");
    DOM.setStyleAttribute(label.getElement(), "right", "0px");

    SimpleLayoutPanel simpleLayoutPanel = new SimpleLayoutPanel();
    simpleLayoutPanel.add(label);

    initWidget(simpleLayoutPanel);
}

@Override
public void onResize() {

    int width = label.getElement().getClientWidth();
    int height = label.getElement().getClientHeight();
    int fontsize = (width>height?height:width);
    if( fontsize > 0 ) {
        DOM.setStyleAttribute(label.getElement(), "font-size", Integer.toString(fontsize)+"px");
    }

    super.onResize();
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-13 12:02:10

您必须向ProvidesResize小部件(RootLayoutPanelResizeLayoutPanel)或HeaderPanel中添加才能使RequiresResize得到尊重。请参阅http://code.google.com/webtoolkit/doc/latest/DevGuideUiPanels.html#Resize

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8487881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档