我的课堂如下:

public class ExchangeWindow extends Window implements Button.ClickListener, Window.ResizeListener  {

public ExchangeWindow() {
    center();
    setWidth(600, Unit.PIXELS);
    setHeight(430, Unit.PIXELS);
    setModal(true);
    setResizable(true);
    setImmediate(true);
    addListener(this);
 }

@Override
public void windowResized(ResizeEvent resizeEvent) {
    if(left.isVisible()) {
        //left.setWidth(600, UNITS_PIXELS);
        exchangeTable.setWidth(600, UNITS_PIXELS);
    }
}


我找到了此链接:https://vaadin.com/forum/thread/117302。我猜我的代码与此类似。是否设置setImmediate(true)永远不会调用windowResized方法;或setImmediate(false);

我正在使用Vaadin 7。

怎么了?如何捕获调整大小事件通知?

最佳答案

从该链接中的代码示例以及该帖子的日期(8年前)来看,您提供的链接可能是针对Vaadin6问题的,为Vaadin7 was released in 2013

无论如何,应该使用addListener(this);而不是addResizeListener(this);

public class WindowWithResizeListener extends Window implements Button.ClickListener, Window.ResizeListener {

    public WindowWithResizeListener() {
        center();
        setWidth(600, Unit.PIXELS);
        setHeight(430, Unit.PIXELS);
        setModal(true);
        setResizable(true);
        setImmediate(true);
        addResizeListener(this);
    }

    @Override
    public void windowResized(ResizeEvent resizeEvent) {
        Notification.show("Resized!");

    }

    @Override
    public void buttonClick(Button.ClickEvent clickEvent) {

    }
}


Vaadin 7.7.9的输出如下:

java - 为什么不调用Vaadin Window.ResizeListener-LMLPHP

07-24 19:08