我有一個CTabFolder,它有許多CTabItems。每個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