Vaadin 10 Dialog, имитирующий заголовок окна Vaadin 8 - PullRequest
0 голосов
/ 01 сентября 2018

Использование Vaadin Flow Java API Я хотел бы эмулировать функцию окна Vaadin 8: в частности, мне нужно эмулировать поведение Caption. Я имею в виду «Заголовок» с фиксированной верхней частью, который нельзя прокручивать как реальное содержание диалога. Кто-нибудь может рассказать мне пример, из которого я мог бы поучиться? Заранее спасибо

Это обходной путь, который я нашел.

public MainView() {
    Button button = new Button("Click me",
            event -> {
                Dialog dialog = new Dialog();
                HorizontalLayout horizontalLayout = new HorizontalLayout();
                VerticalLayout verticalLayout = new VerticalLayout();
                Div headerDiv = new Div();
                Div bodyDiv = new Div();
                bodyDiv.getElement().getStyle().set("overflow", "auto");
                bodyDiv.getElement().getStyle().set("max-height", "420px"); // !!!
                dialog.add(headerDiv, bodyDiv);
                headerDiv.add(horizontalLayout);
                bodyDiv.add(verticalLayout);
                horizontalLayout.add(new Label("Hi there !"));
                for (int i = 1; i <= 20; i++) {
                    verticalLayout.add(new TextField("TextField_" + i));                        
                }
                dialog.open();                  
            });
    add(button);
}

Проблема в том, что мне нужно установить максимальный размер, чтобы избежать прокрутки всех содержащихся компонентов. Поэтому я не могу воспользоваться преимуществами автоматического поведения контейнера диалоговых окон. Также пытался использовать setFlexGrow, но я не достиг решения. Есть подсказка?

1 Ответ

0 голосов
/ 01 сентября 2018

В Vaadin 10+ нет компонента под названием Window, но есть компонент под названием Dialog. Он не имеет заголовка, как Window, но в остальном он имеет аналогичную базовую линию. То есть это всплывающее окно. На основании вашего вопроса вы уже нашли это.

Диалог сам по себе является контейнером компонентов, что означает, что вы можете добавлять туда компоненты. Я бы просто создал, например, два Div (самый простой из компонентов макета в Vaadin 10). Я бы сделал первый стиль с фиксированной высотой и поместил бы там заголовок. И тогда я бы применил component.getElement().getStyle().set("overflow", "auto") к другому, который является фактическим телом контента. Упомянутый стиль включит функцию прокрутки. Вы также можете использовать VerticalLayout / HorizontalLayout вместо Div, в зависимости от того, что вам нужно.

Смотри также: https://vaadin.com/docs/v10/flow/migration/5-components.html

...