0

有没有为 SplitLayoutPanel 的孩子设置最大尺寸的好方法?现在我重写它的 onResize 方法并调用一个 JSNI 函数来设置中心面板的 div、右面板的 div 和分割面板的 div 的父 div 的右或宽度样式属性,如果右/东面板超过 400px 宽.

我注意到拆分器和右侧面板的大小甚至不跟随鼠标光标,而是在大约 4/5 到 2/5 之间剧烈振荡,因为它们应该基于鼠标指针当前的位置。

我在 Eclipse 中调试并尝试在没有 Eclipse 的情况下运行它,它是一样的。我也在调用 super.onResize()。

4

3 回答 3

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 );
于 2012-12-18T18:15:15.353 回答
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>
于 2013-07-10T18:07:35.850 回答
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 的回答

于 2016-05-31T12:50:34.003 回答