GWT CellTable - 设置列宽

发布于 2024-10-08 14:31:42 字数 44 浏览 2 评论 0原文

是否可以在GWT中设置CellTable的列宽?

Is it possible to set the column width of CellTable in GWT?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

方圜几里 2024-10-15 14:31:42

编辑:从 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。这有点像黑客,因为所有应该执行此操作的实际方法都是 CellTable 私有的,并且似乎 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");

       }

    }
}

EDIT: As of GWT 2.2 table.setWidth and table.setColumnWidth are supported

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

I was able to extend the CellTable with a method that sets the widths programmatically. It's a bit of a hack since all the real methods that should do this are private to CellTable and it seems like GWT should provide this method directly, but it seems to work.

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");

       }

    }
}
凹づ凸ル 2024-10-15 14:31:42

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

CellTable 的 Javadoc

You could use a stylename for the specific column, using the addColumnStyleName(int index, java.lang.String styleName) method.

Javadoc for CellTable

葬シ愛 2024-10-15 14:31:42

对我有用的是在我的 css 中添加一个新类。此类仅应用于长度随数据而变化的选择元素。

.__gwt_cell select{
    width:170px;
}

然后将其应用到我特定的单元格样式上,例如 o:

table.getColumn(3).setCellStyleNames("yourstyle");

What worked for me is adding a new class in my css. This class gets applied only to select elements whose length varies depending on data.

.__gwt_cell select{
    width:170px;
}

Then applying it on my particular cell style like o:

table.getColumn(3).setCellStyleNames("yourstyle");
澉约 2024-10-15 14:31:42

CellTable 的 GWT 文档对此进行了介绍,请参阅:
http://www.gwtproject.org/doc/latest/DevGuideUiCellTable.html

在“控制列宽”下。

The GWT documentation for CellTable covers this, see:
http://www.gwtproject.org/doc/latest/DevGuideUiCellTable.html

Under "Controlling Column Widths".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文