2011-10-30 7 views
2

私はTabSheetとタブ項目を持っています。 タブ内にテーブルがあります。 すべての高さをsetFullSizeに設定しましたが、テーブルの高さがタブ全体を占めていません。VAADIN - タブの内容の高さを設定します

コードはここにある:

public class GvApplication extends Application { 
    private static Logger log = Logger.getLogger(GvApplication.class.getName()); 

    Window mainWindow; 
    TabSheet tabsheet; 

    @Override 
    public void init() { 
     setTheme("gv"); 

     mainWindow = new Window("Test"); 
     mainWindow.getContent().setHeight("100%"); 

     tabsheet = new TabSheet(); 
     tabsheet.setSizeFull(); 

     mainWindow.addComponent(tabsheet); 

     initSMSTab(); 

     setMainWindow(mainWindow); 
    } 

    private void initSMSTab() { 
     VerticalLayout tab = new VerticalLayout(); 
     tab.setMargin(true); 

     Table table = new Table("Naam"); 

     table.setWidth("100%"); 
     table.setHeight("100%"); 

     table.setSizeFull(); 
     tab.addComponent(table); 

     tabsheet.addTab(tab); 

     Tab smsTab = tabsheet.getTab(tab); 
     smsTab.setCaption("SMS"); 
    } 
} 

テーブルの下に残された空間がたくさんあります。タブの全内容をテーブルで使用できるようにするにはどうすればよいですか?

答えて

1

、新しいテーブル・コンポーネントを作成し、テーブル「ページ長」、それは行カウントを意味し、値は15で、これはテーブルがあなたのタブのフルサイズを設定していない理由です。フルサイズを設定するには、table.setPageLength(30)でテーブルのページ長を増やすしかありません。

PS。既に "table.setSizeFull();"を使用しているので、この行を削除することができます。あなたが親やテーブルコンポーネントのサイズを変更するときに、コメントで自分の画面に表示して

table.setWidth("100%"); 
table.setHeight("100%"); 

EDIT 1

ケースのみとなります。すべてはあなたの窓にResizeListenerを追加し、リスナーの内側

// This will return current rendered rows count 
    int shownRowsCount = table.getVisibleItemIds().size(); 
    table.setPageLength(shownRowsCount); 
+0

私は 'table.setPageLength'を設定しました。今、このように見えます。 [screen1](http://dl.dropbox.com/u/28125224/31a.png)[screen2](http://dl.dropbox.com/u/28125224/31b.png)私が望むもの常にテーブルヘッダーを表示することです。 – Guus

+0

回答が更新されました。 – Yury

3

レイアウト内の使用可能なスペースをすべて占有する必要がある場合は、コンポーネント上でsetSizeFullを呼び出す以外に、レイアウト上でsetExpandRatioを呼び出す必要があります。あなたのケースでは:デフォルトでは

tabsheet.setSizeFull(); 

VerticalLayout rootLayout = new VerticalLayout(); 
rootLayout.setSizeFull(); 
rootLayout.addComponent(tabsheet); 
rootLayout.setExpandRatio(tabsheet, 1f); 
mainWindow.setContent(rootLayout); 
+0

メインウィンドウのようなもの一切方法 'setExpandRatio'ありませんが、書き込みの拳を試してみてください。私は 'getLayout'を試みましたが、非推奨です。私は '((VerticalLayout)mainWindow.getContent())で終わった。setExpandRatio(tabsheet、1f);'しかし、画面は変わらない。 – Guus

+0

実際にはレイアウト上で呼び出す必要があり、レイアウト上でsetSizeFull()を呼び出さなければなりません。私は私の答えを更新しました。 –

関連する問題