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