0

実行時に項目を追加できる GWT の FlexTable が必要です。FlexTable は ScrollPanel 内にあるため、水平方向のコンテンツが表示領域を超えるとスクロール バーが表示されます。問題は、間隔が広い 2 ~ 3 列がある場合ですが、列数が増えると、セルは 100px の最小必要領域を占有します。Cell が常に 100px のみを使用するようにする必要があります。私は次のことを行っていますが、成功していません。

myflextable.getCellFormatter().setWidth(0, col, "100px");

4

2 に答える 2

0

getFlexCellFormatter().setWidth() メソッドで試してみてください。フレキシブル幅が 100% になっていることも確認してください。

于 2013-04-05T11:02:15.243 に答える
0

問題は、最初にフレックステーブルが広すぎるように設定されている可能性があります。デフォルトでスクロールパネルがいっぱいになり、その結果、列が最大幅まで伸びます。最初にフレックステーブルの幅を明示的に設定する必要があります。実行時に列が追加されると、自動的に正しくサイズ変更されます。

最初に 1 つの行と 2 つの 100px 列がある場合の例を次に示します。

ft = new FlexTable();
ft.addStyleName("flextable");
ft.setWidth("200px");
for (int x = 0; x < 2; x++) {
    ft.setText(x, 0, "cell");
    ft.getCellFormatter().addStyleName(x, 0, "testcell");
}
scrollpanel.add(ft);

そしてあなたのcssはこれを言うべきです:

.flextable {
    table-layout: fixed;
}
.testcell {
    width : 100px;
}

2 つの列から開始するため、flextable は最初は幅 200px に設定されていることに注意してください。CSS ファイルでは、table-layout 属性を設定する必要があります。そうしないと、列を追加するにつれて (セルがコンテンツによって定義される最小幅に達するまで)、列が 100 ピクセルよりも小さくなります。

また、実行時に追加する新しいセルには必ずスタイル名「testcell」を追加してください。

于 2013-04-05T14:16:27.557 に答える