GWT CellTable - 设置列宽

17

在GWT中,是否有可能设置CellTable的列宽度?

4个回答

26

编辑:从 GWT 2.2 开始,table.setWidth 和 table.setColumnWidth 得到支持。

table.setWidth("100%", true);
table.setColumnWidth(nameColumn, 35.0, Unit.PCT);
table.setColumnWidth(addressColumn, 65.0, Unit.PCT);

我能够通过一个方法来编程设置CellTable的宽度。这有点像一种hack,因为所有真正应该执行此操作的方法都是私有的,而且似乎GWT应该直接提供此方法,但它似乎起作用了。

public void setColumnWidths(List<Integer> widths)
{
    TableElement tel = TableElement.as(getElement());
    NodeList<Element> colgroups = tel.getElementsByTagName("colgroup");
    if (colgroups.getLength() == 1)
    {
       TableColElement cge = TableColElement.as(colgroups.getItem(0));
       NodeList<Element> cols = cge.getElementsByTagName("col");
       for (int j = 0; j < widths.size(); j++)
       {
           TableColElement column = null;
           if (cols.getLength() > j)
           {
               column = TableColElement.as(cols.getItem(j));
           }
           else
           {
               column = cge.appendChild(Document.get().createColElement());
           }

           column.setWidth(widths.get(j)+"px");

       }

    }
}

5
你可以使用样式名称来为特定列添加样式,使用addColumnStyleName(int index, java.lang.String styleName)方法。

CellTable的Javadoc


我知道这个方法,但不知道如何使用它。这样的样式类应该在哪里声明? - Opal
在您的应用程序样式表中,请查看ClientBundle或者包含自定义样式表。 - bestform
谢谢,它运行正常。我想在CellTable.Resource中声明这个样式表,但是我遇到了一个异常:[ERROR] 无法处理CSS。您知道如何解决吗? - Opal
抱歉,我自己还没有做过这个,而且你提供的关于错误的信息有点模糊。 - bestform

1
我做的是在我的css中添加一个新类。只有当选择元素的长度因数据而异时,才会应用此类。
.__gwt_cell select{
    width:170px;
}

然后将其应用于我的特定单元格样式,如o:
table.getColumn(3).setCellStyleNames("yourstyle");

-3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接