2010-12-16 25 views

答えて

24

EDITは:GWT 2.2 table.setWidthとtable.setColumnWidthのように、私は、プログラムの幅を設定する方法でCellTableを拡張することができた

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

に支持されています。これを行うべき実際のメソッドはすべて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"); 

     } 

    } 
} 
4

addColumnStyleName(int index, java.lang.String styleName)メソッドを使用して、特定の列にスタイル名を使用できます。

Javadoc for CellTable

+0

私はそれを使用する方法がわからないことで、この方法を知っています。そのようなスタイルクラスはどこで宣言されるべきですか? – Opal

+0

アプリケーションのスタイルシートにあります。 [ClientBundle](http://code.google.com/intl/de-DE/webtoolkit/doc/latest/DevGuideClientBundle.html)をご覧になるか、カスタムスタイルシートを含めてください。 – bestform

+0

ありがとう、それは動作します。私はこのスタイルシートをCellTable.Resourceで宣言したいと思いますが、例外が発生します:[エラー] CSSを処理できません。あなたはそれがどのようにできるか知っていますか? – Opal

0

私のために働いたことは、私のCSSに新しいクラスを追加することです。このクラスは、データによって長さが異なる要素を選択する場合にのみ適用されます。

.__gwt_cell select{ 
    width:170px; 
} 

はその後Oのように私の特定のセルのスタイルでそれを適用する:

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