私は同様の問題を解決していました。行を追加するにつれてテーブルを大きくしたかったのです。データのすべての行が表示されている限り、正確な高さは気にせず、行を追加するにつれて大きくなりました。また、テーブルの下部に常に余分なスペースが表示されるようにしたかったのです。
ここでの中心的な考え方は、私が3つのことをしたということです。
setHeight()
テーブルを呼び出さないでください。
- 以前
setPageLength()
は、テーブルの高さを行ごとに定義していました。つまり、テーブルの高さを何行にするかによって定義していました。
requestRepaint()
サイズを変更した要素を呼び出しました。列要素のサイズを変更した場合は、それを列要素で呼び出しました。テーブルのサイズを変更した場合は、テーブル上でそれを呼び出しました。
これは、私がこの問題をどのように解決したかを示す一般化されたコードサンプルです。私のコードは完全ではありませんが、始めるのに役立つかもしれません。
public class MyClass extends Table {
public MyClass(...)
{
this.setWidth("100%"); // fill parent <td>'s width, allows draggable sizing.
// note: do NOT setHeight().
setupColumns(); // details not shown here
setupBehavior(); // details not shown (listeners, etc)
addDataToTable(); // details not shown
adjustHeight();
}
// I also have a function to add rows to the table when
// a button is clicked. That function calls adjustHeight() (shown below).
public void adjustHeight()
{
this.setPageLength(this.getItemIds().size() + 1);
this.requestRepaint();
}
}
setColumnExpandRatio()
[編集/フォローアップ]この方法を使用すると、 (動的列幅)を使用している場合、テーブルに不要なスクロールバーがレンダリングされる傾向があることがわかりました。したがって、ヘッズアップと同様に、setColumnWidth()
上記のトリックを使用する場合は、固定幅の列()を使用する必要があります。