2016-11-16 65 views
0

我有一個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); 
} 

回答

0

從樣品我不明白的百分比大小的使用。我想這是問題。您最初啓用它,但父組合沒有大小,因此所有列的寬度都設置爲0.通過再次啓用,列寬度不會自動設置爲某個寬度並保持爲0.

寬度的表是從列中派生的。在ViewportLayer的情況下,寬度最大可用客戶區域。但是,由於所有列的寬度都爲0,整個NatTable的寬度爲0.並且在啓用百分比調整後設置默認列寬可能也不會導致您期望的結果,因爲每列都有一個大小值存儲,覆蓋默認寬度。

總之,你的整個想法似乎不適用於NatTable。

+0

我使用百分比大小來確保列名跨越整個父寬度。沒有那個電話他們不會。如果有人在填充數據之前查看錶格,我想要將表格顯示爲與父表格相同的寬度(即使沒有數據,仍然會顯示列名稱) – ekjcfn3902039