私は多くのCTabItemを持つCTabFolderを持っています。各CTabItemはそのコントロールとして異なるNatTableを持っています。各NatTableが作成されると、列見出しはありますが行はありません。 「データを取り込む」ボタンをクリックすると、各テーブルにデータが入力されます。CTabItem内のNatTableの幅
[データを取り込む]ボタンをクリックする前に各タブを表示すると、期待通りに列ヘッダーが表示されます。次に、ボタンを押して、すべてのテーブルにすべてのデータが正しく入力されていることを確認できます。
[データを取り込む]ボタンをクリックする前にタブを表示しないと、以前に表示していなかったタブの列見出しやデータは表示されません。これは、そのタブのNatTableの幅が0であるためです。
「データを取り込む」ボタンをクリックする前に、すべてのタブをクリックする必要はありません。タブがフォーカスされていないときに、NatTableの幅を正しく設定するために、内部的に呼び出されるコール(手動で呼び出す必要があります)があります。私はパーセントのサイジングの使用法を理解していないサンプルから
public void whenNatTableIsCreated(){
// Make sure the table fills the width of the parent
glazedListsGridLayer.getBodyDataLayer()
.setColumnPercentageSizing(true);
nattable.addConfiguration(new DefaultNatTableStyleConfiguration() {
{
cellPainter = new LineBorderDecorator(new
TextPainter(false, true, 5, true));
}
});
}
public void afterTableHasData() {
// Now that we have data, turn off the percentage sizing and
// allow the table width to exceed the parent width
// This fails because getNatTable().getWidth() is 0
getGlazedListsGridLayer().getBodyDataLayer().setDefaultColumnWidth(
getNatTable().getWidth()/getGlazedListsGridLayer().
getBodyDataLayer().getColumnCount());
getGlazedListsGridLayer().getBodyDataLayer()
.setColumnPercentageSizing(false);
}
パーセンテージのサイジングを使用して、列の名前が親の幅全体に及ぶことを確認します。その呼び出しなしでは、彼らはしません。誰かがデータを入力する前にテーブルを見ている場合、テーブルを親テーブルと同じ幅で表示したい(たとえデータがなくても、列名が表示されている) – ekjcfn3902039