GWT CellTable - установка ширины столбца

Можно ли установить ширину столбца CellTable в GWT?

Ответы

Ответ 1

EDIT: с 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");

       }

    }
}

Ответ 2

Вы можете использовать stylename для конкретного столбца, используя метод addColumnStyleName(int index, java.lang.String styleName).

Javadoc для CellTable

Ответ 3

Что сработало для меня - это добавить новый класс в мой css. Этот класс применяется только для выбора элементов, длина которых зависит от данных.

.__gwt_cell select{
    width:170px;
}

Затем применяя его в моем стиле ячейки, например o:

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