2017-01-16 8 views
1

私はvaadin tree tableを使用しています、いくつかのビジネス基準を満たすいくつかの行の第1列colspan(テーブルの列の総数に等しい)を設定したいと思います。残りのテーブル行では、個々の列が正常に表示されます。
生成された列を使用して、明示的に列の幅を設定したり、複合列を設定したりしてみました。そうすることで、すべての行/列のレイアウトが変更されます。どうやってこれを達成するかをお勧めします。
ありがとうございます!Vaadinテーブル|どのようにcolspanを設定する

答えて

0

TreeTable#setColumnExpandRatio(String columnName, float value)を呼び出して列の幅を設定できます。

以下の例では、「名前」列の幅を75%に設定しました。他に何も指定しなければ、残りの列は残りのスペースに収まります。

ttable.setColumnExpandRatio("Name", 0.75f); 
ttable.setColumnExpandRatio("Number", 0.25f); //not necessary 

私はVaadin帳から変更されている以下の例を試してみてください。

@Theme("mytheme") 
public class MyUI extends UI { 

@Override 
protected void init(VaadinRequest vaadinRequest) { 
    final VerticalLayout layout = new VerticalLayout(); 
    layout.setSizeFull(); 
    TreeTable ttable = new TreeTable(); 

    ttable.addContainerProperty("Name", String.class, null); 
    ttable.addContainerProperty("Number", Integer.class, null); 

    //Add some sample data 
    ttable.addItem(new Object[]{"Menu", null}, 0); 
    ttable.addItem(new Object[]{"Beverages", null}, 1); 
    ttable.setParent(1, 0); 
    ttable.addItem(new Object[]{"Foods", null}, 2); 
    ttable.setParent(2, 0); 
    ttable.addItem(new Object[]{"Coffee", 23}, 3); 
    ttable.addItem(new Object[]{"Tea", 42}, 4); 
    ttable.setParent(3, 1); 
    ttable.setParent(4, 1); 
    ttable.addItem(new Object[]{"Bread", 13}, 5); 
    ttable.addItem(new Object[]{"Cake", 11}, 6); 
    ttable.setParent(5, 2); 
    ttable.setParent(6, 2); 

    ttable.setColumnExpandRatio("Name", 0.75f); 
    ttable.setColumnExpandRatio("Number", 0.25f); 
    ttable.setSizeFull(); 
    layout.addComponents(ttable); 
    layout.setMargin(true); 
    layout.setSpacing(true); 

    setContent(layout); 
} 

@WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true) 
@VaadinServletConfiguration(ui = MyUI.class, productionMode = false) 
public static class MyUIServlet extends VaadinServlet { 
} 
} 
+1

' TreeTable#setColumnExpandRatio(String columnName、float value) 'は、すべての行の列幅を更新します。私の必要条件は、いくつかの行(すべての行ではない)のセルの一部の幅を拡張することです。ありがとう。 – masT

+0

TBH、これは実現可能だとは思わない。列の幅は「グローバル」なので、特定の行に設定することはできません。列を見たテーブルはすべて「整列」しています。あなたはツリーグリッドアドオンを試すことができます。それはグリッドを拡張し、より良い調整やグループ化された列の作成を可能にします。それ以外の場合は、あなたのUIを再考するかもしれないと思います。あなたがダイアグラムやスキームを持っているなら、間違いなく助けになるでしょう。 –

0

あなたがcom.vaadin.ui.Table.setRowGenerator使用することができます。Java 8 + Vaadinで

例を7.6.1

setRowGenerator((Table table, Object itemId) -> { 
    if (itemId instanceof MyClassThatIdentifiesARowToMerge) { 
     Table.GeneratedRow generatedRow = new Table.GeneratedRow("text-of-merged-cell"); 
     generatedRow.setSpanColumns(true); 
     return generatedRow; // merge 
    } 
    return null; // doesn't merge 
}); 
関連する問題