私の心に来たソリューションは、コンテンツが(原因ブラウザのウィンドウサイズに)十分なスペースがいない場合は、スクロールバーが表示されるように、最大の高さやモーダルウィンドウの100%の高さの両方を設定することです。逆に、ブラウザのウィンドウが十分大きければ、max-heightが有効になり、モーダルウィンドウは中央に配置され、ccs max-heightで事前定義されます。
私のアプリで動作するコードサンプル:
windowOpenButton.addClickListener(event -> {
Window window = new Window();
window.setWidth("100px");
window.setHeight("100%");
window.setModal(true);
window.setResizable(false);
window.setClosable(false);
Panel panel = new Panel();
Button close = new Button("close");
close.addClickListener(event1 -> window.close());
VerticalLayout content = new VerticalLayout(new Button(), new Button(), new Button(), new Button(), new Button(), new Button(), new Button(), new Button(), new Button(), new Button(), close);
content.setSizeFull();
panel.setContent(content);
window.setContent(panel);
window.setStyleName("max_height");
panel.setSizeUndefined();
UI.getCurrent().addWindow(window);
});
はCSS:
.max_height {
max-height: 350px;
}