2017-07-26 18 views
1

に長いテキストをラップするために、私は7列のVaadinグリッド持っている:私は必要なものVaadinグリッドどの列

Grid grid = new Grid<>(); 
grid.setSizeFull(); 

grid.addColumn(User::getUserName).setCaption("Name").setExpandRatio(2); 
grid.addColumn(User::getLastName).setCaption("Last Name").setExpandRatio(1);      
grid.addColumn(User::getAge).setCaption("Age").setExpandRatio(2); 
grid.addColumn(User::getWork).setCaption("Work").setExpandRatio(1); 
grid.addColumn(User::getJobTitle).setCaption("Job Title").setExpandRatio(1); 
grid.addColumn(User::getSalary).setCaption("Salary").setExpandRatio(1); 
grid.addColumn(User::getOther).setCaption("Other").setExpandRatio(1); 

する方法で列幅を設定することです - 全7が画面に表示されているということ。 私のコードでは、任意の列セルのテキストコンテンツが非常に長い場合、最後の列は画面に表示されず、画面を水平方向にスクロールする必要があります。

私はメソッドsetWidth()を使用しようとしましたが、ピクセル単位で表示されるため、さまざまなブラウザや画面でグリッド表示が異なる場合があります。

私が必要とするのは、異なる画面や異なるセル値でグリッドが同じように見えることです。

+0

問題は列の展開率ではなく、テキストを折り返す方法です。 – efekctive

+0

詳細を教えてください。 – Lena

+0

テキストが短い場合、expandRatioは保持しています。テキストが長すぎると、拡大率が壊れます。セルの高さで試してみてください。役立つかどうかを確認してください。 – efekctive

答えて

0

最近、私は、これは私の解決策と同じような状況だった:

グリッド構成

Grid<Item> gridItem = new Grid<>(); 
gridItem.setRowHeight(50.0); 

カラム構成

gridItem.addComponentColumn(item -> { 
      Label label = new Label(); 
      label.setValue(item.getText()); 
      label.setWidthUndefined(); 
      label.setStyleName(ValoTheme.LAYOUT_HORIZONTAL_WRAPPING); 
      return label; 
     }) 
     .setCaption("Item") 
     .setWidth(380.0); 

結果:

enter image description here

関連する問題