Обновить пользовательский интерфейс в gwt - PullRequest
0 голосов
/ 17 ноября 2009

Я создал несколько пользовательских составных виджетов, которые прослушивают события (в моем случае loginEvent). Как только событие поймано, состояние виджета меняется так, как он должен выглядеть (в моем случае я хотел бы изменить один из значков на сигнал о том, что пользователь вошел в систему).

Однако, после того, как событие перехвачено, могу ли я заставить виджет снова нарисовать себя в соответствии с новым состоянием?

Я довольно новичок в GWT, поэтому будьте осторожны и, пожалуйста, уточните ...

Ответы [ 2 ]

1 голос
/ 18 ноября 2009

Есть много способов сделать это. В этом примере показано, как отобразить вход / выход из системы и переключение видимости при возникновении события, вошедшего в систему.

public class LoginLogoutWidget extends Compostite {
    private final Anchor m_loginLink;
    private final Anchor m_logoutLink;

    public LoginLogoutWidget() {

        m_loginLink = new Anchor("Login");
        //Register event handlers etc

        m_logoutLink = new Anchor("Logout");
        //Register event handlers etc

        HorizontalPanel hp = new HorizontalPanel();

        hp.add(m_loginLink);
        hp.add(m_logoutLink);

        initWidget(hp);

        //Default login visible, and logout invisible
        m_logoutLink.setVisible(false);
    }

    public void onLoginEvent(boolean loggedIn) {        
        m_loginLink.setVisible(!loggedIn);
        m_logoutLink.setVisible(loggedIn);  
    }
}
0 голосов
/ 18 ноября 2009

Если у вас есть что-то вроде этого:

HorizontalPanel panel = new HorizontalPanel();
Image oldImage = new Image("url to old img");
panel.add(oldImage);

Тогда вы сможете сделать что-то вроде этого:

panel.remove(oldImage);
Image newImage = new Image("url to new img");
panel.add(newImage);

panel.layout();

Я обнаружил, что в некоторых случаях, если я не вызываю метод "layout ()" для родительского контейнера, то вещи, которые я добавил программно, не отображаются на экране так, как я ожидал к.

Надеюсь, это поможет!

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