Image 刷新gwt中的UI
我创建了一些定制的复合小部件,它监听事件(在我的例子中是loginEvent)。一旦捕捉到事件,小部件的状态就会改变,就像它应该看起来的那样(在我的例子中,我想将其中一个图标更改为用户已登录的信号) 但是,在捕获事件后,我是否可以根据新的状态使小部件再次绘制自身Image 刷新gwt中的UI,image,gwt,user-interface,event-handling,Image,Gwt,User Interface,Event Handling,我创建了一些定制的复合小部件,它监听事件(在我的例子中是loginEvent)。一旦捕捉到事件,小部件的状态就会改变,就像它应该看起来的那样(在我的例子中,我想将其中一个图标更改为用户已登录的信号) 但是,在捕获事件后,我是否可以根据新的状态使小部件再次绘制自身 我是GWT的新手,所以请温柔一点,并详细说明……有很多方法可以做到这一点。此示例演示如何在引发用户登录事件时显示登录/注销和切换可见性 public class LoginLogoutWidget extends Compostite
我是GWT的新手,所以请温柔一点,并详细说明……有很多方法可以做到这一点。此示例演示如何在引发用户登录事件时显示登录/注销和切换可见性
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);
}
}
如果你有这样的东西:
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()”方法,那么以编程方式添加的内容就不会像我期望的那样显示在屏幕上
希望有帮助 panel.layout()-对我来说,这听起来像GXT,而不是核心GWT。。。。不,使用GXT时,事情并不像您预期的那样正常,因为与普通GWT不同,由于各种原因,更改不会立即应用于DOM。这会导致对.layout()和类似方法的各种过量调用。至少在我们开始离开那个库之前,它在我们的代码中出现了。侧钻,否则是好的。