2012-03-28 26 views
3

Vaadinでは、Horizo​​ntalLayoutは、各コンポーネントに必要なスペースを十分に確保し、それ以上のスペースを確保します。コンテンツの幅に応じた列幅のVaadinテーブル

ただし、BeanItemContainerで作成されたテーブルでは、すべての列の幅が同じです。テーブルの内容は動的に読み込まれるため、幅が異なるたびに異なるPCのフォントサイズが異なるため、固定幅をピクセル単位で指定する必要はありません。

行をhtmlテーブルまたはHorizo​​ntalLayoutのように動作させるには、各行に適切な幅を与え、それ以下ではないことをどのように伝えることができますか?

答えて

1

あなただけのCSSルールでこれを試すことがあります。

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

Chromeは> = 4、Firefoxは> = 3.5、Operaは> = 9.6、Safariは> = 3.2、IEは> = 9

+0

残念ながら私はVaadinをもう使用しませんので、この回答が正しいかどうかを確認することはできません。 –

+0

私はそうしたいと思いますが、それはその中の機密データです。接触する別のチャンネルでしょうか? –

+0

それでは、あなたはそれをチェックしたと信じています:-) –

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); 

編集:あなたは一つのセル(例えば、最後の1)のためexpandratioを設定した場合、他のすべてがちょうど必要な自分のスペースを取ります。これはあなたの要件の回避策になる可能性があります。

最後に追加した項目をコメントアウトすると、最初の列に必要な領域だけが表示されます。

+0

比は修正されません拡大します残念ながら問題は拡大率はオブジェクトに必要以上のスペースを与えますが、最小値を持つだけです(それほど小さくはありません)。 –

+0

前の投稿に例を追加しました。 – nexus

+0

Vaadinバージョン6.7.2では、拡張比率1.0fは豊富なスペースをすべて取るだけです。他の列はサイズ変更されません。私たちが望むのは、列が展開されてその値が完全に表示されるということです。 –

3

setColumnWidth(-1)は自動スケーリングを有効にする必要があります。これは通常はBeanItemContainersであっても、自動的にその動作を見ていないのは驚きです。 SizeableインターフェイスのメソッドであるsetSizeUndefined()は、おそらく価値のある概念です。

関連する問題