有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

未提供java GWT数据网格

我正在尝试从CellTable切换到DataGrid。实际的更改非常简单(API是完全相同的)-但是如果不明确设置网格的宽度和高度,我无法使网格可见。在CellTable中,将宽度和高度设置为100%就足够了,这就是我想要的行为

在我看来,HotrizontalPanel中有两个部分:一个显示一些选项卡(按钮),另一个显示网格。每次单击选项卡时,将清除栅格区域并创建新栅格

视图如下所示:

<ui:style>
    .expanded {
        width: 100%;
        height: 100%;
    }

    .simpleContainer {
        border-top: 5px solid #484848;
        border-bottom: 5px solid #484848;
    }
</ui:style>

<c:SimpleContainer addStyleNames="{style.simpleContainer} SimpleContainer">
    <g:HorizontalPanel>
        <g:HorizontalPanel ui:field="headersContainer"/>
        <g:FlowPanel ui:field="tablePanel" styleName="{style.expanded}"/>
    </g:HorizontalPanel>
</c:SimpleContainer>

这是正在运行的应用程序的HTML快照:

<div class="GKQJTVMDCNC-com-mycode-management-client-ui-panels-PropertiesPaneView_PropertiesPaneUiBinderImpl_GenCss_style-simpleContainer SimpleContainer" id="x-widget-21" style="width: 1730px; height: 126px; ">
<table cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td align="left" style="vertical-align: top; ">....</td>
            <td align="left" style="vertical-align: top; ">
                <div class="GKQJTVMDBNC-com-mycode-management-client-ui-panels-PropertiesPaneView_PropertiesPaneUiBinderImpl_GenCss_style-expanded">
                    <div style="position: relative; overflow-x: hidden; overflow-y: hidden; " __gwtcellbasedwidgetimpldispatchingfocus="true" __gwtcellbasedwidgetimpldispatchingblur="true">
                        ....
                    </div>
                </div>
            </td>
        </tr>
    </tbody>
</table>

上面的div具有正确的宽度和高度,但不知何故,DataGrid div具有1px的高度和0px的宽度(根据chrome开发工具的列表)

<div class="GKQJTVMDBNC-com-mycode-management-client-ui-panels-PropertiesPaneView_PropertiesPaneUiBinderImpl_GenCss_style-expanded">

有什么想法吗


共 (2) 个答案

  1. # 1 楼答案

    将DataGrid放在SimpleLayoutPanel中(并将所有内容放在RootLayoutPanel上)会有所帮助,谢谢

    但是它只在这个简单的情况下有效——在我的布局中,它不会有帮助。似乎因为桌子在水平面板内,所以不会有合适的尺寸。用适当的CSS将HorizontalPanel拆分为两个div,使其水平,也不会有帮助

    最后,我通过设置DataGrid的宽度和高度(从宿主父窗口小部件获取值),成功地解决了这个问题。我不喜欢这个解决方案,但这是经过长期尝试和错误后我能想出的最好办法。 我找不到不以“静态”方式使用DataGrid的好例子:GWT showcase只提供了一种明显的情况——网格在出现之前用数据初始化。这根本不是常见的情况

  2. # 2 楼答案

    是的,CellTable确实在100%的高度和宽度下工作
    然而,“数据网格”没有。 您需要设置明确的宽度/高度
    或者,您可以将“DataGrid”放在实现ProvidesResize接口(即SimpleLayoutPanel)的“LayoutPanel”中
    使用LayoutPanel的好处是,在调整浏览器窗口大小时,Datagrid会自动调整大小