我创建了一些自定义复合窗口小部件,它侦听事件(在我的例子中是loginEvent)。一旦事件被捕获,窗口小部件的状态就会改变,因为它看起来应该是这样(在我的情况下,我想将其中一个图标更改为用户登录的信号)。
然而,在捕获事件之后,我可以根据新状态使小部件再次绘制自己吗?
我对GWT很新,所以要温柔,请详细说明......
答案 0 :(得分:1)
有很多方法可以做到这一点。此示例显示如何在用户登录事件时显示登录/注销和切换可见性。
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);
}
}
答案 1 :(得分:-3)
如果你有这样的事情:
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()”方法,那么我以编程方式添加的内容就不会像我期望的那样显示在屏幕上至。
希望有所帮助!