2011-10-30 2 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)에 의해 증가 된 테이블 "페이지 길이"입니다.

추신. 이미 "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

MainWindow를 같은있는 방법'setExpandRatio'이 없습니다 쓰기의 주먹을보십시오. 'getLayout'을 시도했지만 사용되지 않습니다. 나는 ((VerticalLayout) mainWindow.getContent())로 끝났다. setExpandRatio (tabsheet, 1f);'하지만 화면은 바뀌지 않는다. – Guus

+0

실제로 레이아웃에서 호출해야하며 레이아웃에서 setSizeFull()을 호출해야합니다. 나는 나의 대답을 업데이트했다. –