2012-03-28 60 views
3

在Vaadin,一個Horizo​​ntalLayout給出各組分完全相同它需要只要有足夠的它,而不是多個空間。Vaadin表寬度

在具有BeanItemContainer然而創建一個表,所有列具有相同的寬度。由於表格內容是動態加載的,寬度每次都不一樣,不同的PC具有不同的字體大小,我們不希望以像素爲單位指定固定的寬度。

我們怎麼知道行表現得像一個HTML表格或在它給每個行權寬度,而不是更多,不是更少Horizo​​ntalLayout?

回答

1

您可能僅與CSS規則嘗試:

.v-table td:last-child { 
    margin-right:auto; 
} 

鉻> = 4,火狐> = 3.5,歌劇> = 9.6時,Safari> = 3.2,IE> = 9

+0

不幸的是,我不再使用Vaadin,所以我無法驗證自己如果這個答案是正確的,如果你提供了一個截圖來證明它的工作,我會接受它。 – 2016-02-11 14:02:52

+0

我會,但它是敏感數據。也許另一個渠道聯繫? – 2016-02-11 14:24:22

+0

好吧,我只是相信你已經檢查過它:-) – 2016-02-11 15:00:46

3

這聽起來就是你在尋找擴大比例。它的工作方式與Horizo​​ntalLayout的展開比例類似。

看一看https://vaadin.com/api/com/vaadin/ui/Table.html#setColumnExpandRatio%28java.lang.Object,%20float%29以獲取更多信息。

Table oTable = new Table(); 
oTable.addContainerProperty("First name", String.class, null); 
oTable.addContainerProperty("Last name", String.class, null); 
oTable.addContainerProperty(YEAR_PROPERTY, Integer.class, null); 

oTable.addItem(new Object[] { "Nicolaus","Copernicus",new Integer(1473) }, new Integer(1)); 
oTable.addItem(new Object[] { "Tycho", "Brahe",  new Integer(1546) }, new Integer(2)); 
oTable.addItem(new Object[] { "Giordano","Bruno",  new Integer(1548) }, new Integer(3)); 
oTable.addItem(new Object[] { "And this is a very very long cell", "Newton", new Integer(1643) }, new Integer(4)); 

oTable.setSizeFull(); 
oTable.setColumnExpandRatio(YEAR_PROPERTY, 1.0f); 

編輯:如果你設置了expandratio爲一個單元(例如最後一個)所有其他人只是採取必要的空間。這可能是您的要求的解決方法。

如果您註釋掉最後添加的項目,您會看到第一列僅佔用所需的空間。

+0

的擴大比率不固定不幸的是,這個問題的擴展比率給了一個物體比它真正需要更多的空間,但是我希望它只有最小值(但不能小於)。 – 2012-03-30 09:58:41

+0

我已在前一篇文章中添加了一個示例。 – nexus 2012-03-30 11:45:11

+0

隨着Vaadin版本6.7.2,擴展比率1.0f只需佔用所有豐富的空間。其他列不會重新調整大小。我們想要的是,列擴大,所以他們的價值觀完全顯示。 – 2012-09-14 15:29:17

3

setColumnWidth(-1)應該激活自動縮放。雖然這通常是默認的(即使有BeanItemContainers,所以我很驚訝你沒有看到系統自動顯示該行爲。 一個相關的概念,可能值得你追求的是setSizeUndefined(),這是相當大的接口的方法。