Gwt 我需要知道垂直面板何时改变大小
我正在使用GWTDND在我的gwt程序中实现拖放功能。要使滚动正常工作,我需要Gwt 我需要知道垂直面板何时改变大小,gwt,drag-and-drop,resize,rendering,Gwt,Drag And Drop,Resize,Rendering,我正在使用GWTDND在我的gwt程序中实现拖放功能。要使滚动正常工作,我需要 <ScrollPanel> <AbsolutePanel> <VerticalPanel> <!-- lots of draggable widgets --> </VerticalPanel> </AbsolutePanel> </ScrollPanel>
<ScrollPanel>
<AbsolutePanel>
<VerticalPanel>
<!-- lots of draggable widgets -->
</VerticalPanel>
</AbsolutePanel>
</ScrollPanel>
我必须手动将AbsolutePanel的大小设置为足以容纳VerticalPanel。但是,当我向VerticalPanel添加小部件时,VerticalPanel.getOffsetSight()报告的大小不会立即更新——我想它必须首先由浏览器呈现。所以我不能立即更新AbsolutePanel的大小,结果它太小了。啊
我的权宜之计是设置一个计时器,在500毫秒后调整面板大小。到那时,GetOffsetSight通常会返回更新的值。是否有任何方法可以立即预览尺寸更改或其他内容?或者,我可以立即强制渲染循环,以便在不设置计时器的情况下获得新的大小,而计时器必然容易出错?这是DOM操作的常见问题。在添加组件后的短时间内,offsetHeight才会更新。我喜欢使用递归计时器来处理这个问题,直到违反了一个前提条件。例如,在您的情况下,有一个添加组件的函数,其定义如下:
public void addComponent(Widget w)
{
final int verticalPanelHeight = verticalPanel.getOffsetHeight();
verticalPanel.add(w);
final Timer t = new Timer(){
public void run()
{
if(verticalPanelHeight != verticalPanel.getOffsetHeight())
absolutePanel.setHeight(verticalPanel.getOffsetHeight() + 10 + "px");
else
this.schedule(100);
}
};
t.schedule(100);
}
什么时候检查新的面板高度?我想在添加新的小部件后立即检查。