2016-09-28 6 views
0

vaadinビューに水平スクロールバーを追加しようとしましたが、結果はありません。手伝っていただけませんか。ここに私のビューの完全なコードは次のとおりです。vaadinの水平スクロールバーが表示されません

public class TestView extends CssLayout implements View { 
/** 
* 
*/ 
private static final long serialVersionUID = 1L; 

protected void init() { 
    Layout content = new VerticalLayout(); 
    content.setSizeFull(); 
    addComponent(content); 

    // add content to make the scrollbar appear 
    HorizontalLayout rightLayout = new HorizontalLayout(); 
    for (int i = 0; i < 100; i++) { 
     rightLayout.addComponent(new Button("Button " + i)); 
    } 

    Panel rightPanel = new Panel(rightLayout); 
    rightPanel.setSizeFull(); 

    content.addComponent(rightPanel); 
} 

public TestView() { 
    super(); 
    init(); 
} 

@Override 
public void enter(ViewChangeEvent event) { 
    // TODO Auto-generated method stub 

} 

}

+0

外側のCssLayoutのサイズを確認してください。そのサイズは未定義であってはなりません。相対サイズ(100%など)のコンポーネントは、固定サイズまたは相対サイズではなく未定義サイズのレイアウトにあることが重要です。パネル内では、固定サイズまたは未定義のサイズを使用するため、コンテンツがパネルより大きくなり、スクロールバーが表示されます。 –

+0

答えをありがとう。それは動作しますが、スクロールバー(水平のみ)を表示するために、ページを更新する必要があります。このスクロールバーを動的に追加する方法はありますか?私はそのような部分を追加しました:setWidth(UI.getCurrent()。getPage()。getBrowserWindowWidth()、Unit.PIXELS); \t \t setHeight(UI.getCurrent()。getPage()。getBrowserWindowHeight() - 38、Unit.PIXELS); – user6676850

答えて

0

私はリスナーを追加しましたし、それが正常に動作:

Page.getCurrent().addBrowserWindowResizeListener(event -> { 
     setWidth(UI.getCurrent().getPage().getBrowserWindowWidth(), Unit.PIXELS); 
     setHeight(UI.getCurrent().getPage().getBrowserWindowHeight(), Unit.PIXELS); 
    }); 
1

私は、あなたはおそらく、むしろCSSLayoutよりVerticalLayout拡張しているべきだと思います

public class TestView extends VerticalLayout implements View { 
/** 
* 
*/ 
private static final long serialVersionUID = 1L; 

protected void init() { 
    setSizeFull(); 

    // add content to make the scrollbar appear 
    HorizontalLayout rightLayout = new HorizontalLayout(); 
    for (int i = 0; i < 100; i++) { 
     rightLayout.addComponent(new Button("Button " + i)); 
    } 

    Panel rightPanel = new Panel(rightLayout); 
    rightPanel.setSizeFull(); 

    addComponent(rightPanel); 
} 

public TestView() { 
    super(); 
    init(); 
} 

@Override 
public void enter(ViewChangeEvent event) { 
    // TODO Auto-generated method stub 

} 
} 
関連する問題