需要GWT SplitLayoutPanel具有最大尺寸,拖动非常跳跃

时间:2012-08-20 22:08:59

标签: gwt

有没有一种方法可以为SplitLayoutPanel的子级设置最大大小?现在我覆盖它的onResize方法并调用JSNI函数来设置中心面板div的父div的右侧或宽度样式属性,右侧面板的div和分割面板的div,如果右/右面板超过400px宽。

我注意到分离器和右侧面板的大小甚至没有跟随鼠标光标,并且在大约4/5和2/5之间大致振荡,它们应该基于鼠标指针的当前位置。

我在eclipse中调试并尝试在没有eclipse的情况下运行它并且它是相同的。我也在调用super.onResize()。

3 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您希望让SplitLayoutPanel占用父元素的最大空间。为此,您可以使用宽度的百分比属性,如

SplitLayoutPanel slp = new SplitLayoutPanel();
slp.setWidth( "100%" );

在下一步中,您要将子元素添加到SplitLayoutPanel中,它应该占用最大区域。然后将每个子宽度设置为100%

Widget child = // Instantiate any type of widget
child.setWidth( "100%" );
slp.add // Use proper add method and add the child to SplitLayoutPanel

我不明白你的意思是什么 拖动非常跳跃 。你的意思是拆分器尺寸太小,你找不到拆分器。如果是这种情况,您可以通过在构造函数中传递它来增加拆分器大小,如

int splitter_size_in_pixels = 5;
SplitLayoutPanel slp = new SplitLayoutPanel( splitter_size_in_pixels );

答案 1 :(得分:0)

  

我注意到分离器和右侧面板的大小甚至没有跟随鼠标光标,并且在大约4/5和2/5之间大致振荡,它们应该基于鼠标指针的当前位置。

拖动分离器时,我也看到了不稳定的动作。我的南方窗格包含一个垂直面板,其中包含标签和桌子。修复是设置VerticalPanel height =“100%”。我附上了uibinder代码。

HTH 儒略

    <g:SplitLayoutPanel styleName="gwt-SplitLayoutPanelTtc" ui:field="splitLayoutPanel">
    <g:north size="40">
        ...
    </g:north>
    <g:west size="200">
        ...
    </g:west>
    <g:south size="500">
        <g:VerticalPanel height="100%" width="100%">
            <g:Label ui:field="tableTitle" styleName="tableTitle"></g:Label>
            <g:Grid ui:field="table" styleName="gwt-Grid"></g:Grid>
        </g:VerticalPanel>

    </g:south>
    <g:center>
        ...
    </g:center>
</g:SplitLayoutPanel>

答案 2 :(得分:0)

你可以通过添加中间ResizeLayoutPanel来修复生涩/跳跃动作。

MyComposite.ui.xml:

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
    xmlns:g="urn:import:com.google.gwt.user.client.ui" 
    xmlns:my="urn:import:my.custom.package.client">

<g:SplitLayoutPanel ui:field="splitLayoutPanel">
    <g:west size="250">
    <g:ResizeLayoutPanel ui:field="leftMenuOuterPanel">
            <my:MenuWidget ui:field="menuWidget" />
        </g:ResizeLayoutPanel>
    </g:west>
    <g:center>
        <g:ResizeLayoutPanel ui:field="centerOuterPanel">
            <my:AwesomeWidget ui:field="centerWidget" />
        </g:ResizeLayoutPanel>
    </g:center>
</g:SplitLayoutPanel>

</ui:UiBinder>

感谢OlivierH answer