Отображение ввода пользователя через список - PullRequest
0 голосов
/ 16 мая 2018

Я использую Vaadin и Spring, и я хочу отобразить адрес электронной почты, когда я нажимаю кнопку добавления электронной почты вместе с кнопками редактирования и удаления рядом с адресом электронной почты. Вы можете увидеть, как это выглядит для телефона. Как я могу сделать это с помощью списка?

Here is the image

Это код для Email Layout

 private void createEmailLayout()
    {

        emailLayout = new VerticalLayout();
        emailLayout.setMargin(false);
        emailLineLayout = new GridLayout(3, 1);
        emailLineLayout.setSpacing(true);

        Button emailButton = getButton("Add Email");
        emailButton.addClickListener(new Button.ClickListener()
        {

            private static final long serialVersionUID = -817258593606002344L;

            @Override
            public void buttonClick(ClickEvent event)
            {
                PersonWindow personDialog = new PersonWindow("Add Email", new DialogWindowListener<Person>()
                {
                    @Override
                    public void dialogConfirmed(Person email)
                    { 

                        person.setEmail(email.getEmail());           

                       refreshEmailList();

                    }

                    @Override
                    public void dialogClosed(boolean confirmed)
                    {
                    }
                });

                CcptUI.getCurrent().addWindow(personDialog);

            }
        });

        emailLayout.addComponents(emailLineLayout, emailButton);

    }

1 Ответ

0 голосов
/ 17 мая 2018

Если вы хотите добавлять новый "emailLineLayout" каждый раз, когда нажимаете кнопку добавления и подтверждаете действие, вам нужно вызвать addComponents в вашем dialogConfirmed методе.

@Override
public void dialogConfirmed(Person email)
{ 
    GridLayout emailLineLayout = new GridLayout(3, 1);

    // adding components to the GridLayout
    ...

    person.setEmail(email.getEmail());
    emailLayout.addComponent(emailLineLayout);      
}

Вы также не должны добавлять «emailLineLayout» при инициализации «emailLayout».

emailLayout.addComponent(emailButton);

PS: вы создали "emailLineLayout" только один раз. Вам нужен новый экземпляр GridLayout каждый раз, когда вы хотите добавить новое электронное письмо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...