Вкладки и сетка в Ваадин 12 - PullRequest
0 голосов
/ 01 марта 2019

Я выбираю Vaadin для создания очень простого пользовательского интерфейса в приложении весенней загрузки.

У меня есть:

@Route
@PWA(name = "Signing certificates manager", shortName = "CertMgr")
public class MainView extends VerticalLayout {

    public MainView() {
        Tab tab1 = new Tab("Certificates");
        Tab tab2 = new Tab("Users");

        Tabs tabs = new Tabs(tab1, tab2);

        CertView certView = new CertView();
        certView.setVisible(false);
        UserView userView = new UserView(addUsers());
        userView.setVisible(true);

        Map<Tab, Component> tabsToPages = new HashMap<>();
        tabsToPages.put(tab1, certView);
        tabsToPages.put(tab2, userView);

        Div pages = new Div(certView, userView);

        Set<Component> pagesShown = Stream.of(userView)
                .collect(Collectors.toSet());

        tabs.addSelectedChangeListener(event -> {
            pagesShown.forEach(page -> page.setVisible(false));
            pagesShown.clear();
            Component selectedPage = tabsToPages.get(tabs.getSelectedTab());
            selectedPage.setVisible(true);
            pagesShown.add(selectedPage);
        });

        add(tabs, pages);
    }

    private List<User> addUsers() {
        return new LinkedList<User>() {{
            add(new User("qewr", "asdf", "xzcv"));
        }};
    }
}

и

public class UserView extends VerticalLayout {
    Grid<User> grid;

    public UserView(List<User> users) {
        grid = new Grid<>(User.class);
        grid.setItems(users);

        grid.addColumn(User::getMail).setHeader("mail");
        grid.addColumn(User::getName).setHeader("name");
        grid.addColumn(User::getPass).setHeader("pass");

        grid.addSelectionListener(event -> {
            List<User> selected = (List<User>) event.getAllSelectedItems();
            add(new UserRow(selected.get(0)));
        });

        add(grid);
    }
}

и результатэто вид, подобный следующему: and the result of this is a view like this:

так что вы можете видеть, что сетка не имеет ширины и слишком длинна (у меня там только один пользователь)

Я новичок в Vaadin, поэтому, конечно, я делаю что-то не так, но в основном это вкладок vaadin обработка из образцов.

Мои вопросы: как правильно нарисовать сетку с моим текущимнастроить?Можно ли отобразить вид с совершенно другой страницы, если нажатие на вкладку с этой страницей будет иметь собственный контекст и может использовать DI Spring?хотел бы иметь автономную страницу и не связанные объекты, как у меня сейчас.или посоветуйте лучший способ справиться с этим с vaadin, пожалуйста.

Vaadin: 12.0.7

Spring-Boot: 2.1.2.RELEASE

Надеюсь, вы поняли мою точку зрения.

Спасибо за советы!

1 Ответ

0 голосов
/ 03 марта 2019

просто сделай

Div pages = new Div(certView, userView);
    pages.setSizeFull();
...