Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 刷新gwt中的UI_Image_Gwt_User Interface_Event Handling - Fatal编程技术网

Image 刷新gwt中的UI

Image 刷新gwt中的UI,image,gwt,user-interface,event-handling,Image,Gwt,User Interface,Event Handling,我创建了一些定制的复合小部件,它监听事件(在我的例子中是loginEvent)。一旦捕捉到事件,小部件的状态就会改变,就像它应该看起来的那样(在我的例子中,我想将其中一个图标更改为用户已登录的信号) 但是,在捕获事件后,我是否可以根据新的状态使小部件再次绘制自身 我是GWT的新手,所以请温柔一点,并详细说明……有很多方法可以做到这一点。此示例演示如何在引发用户登录事件时显示登录/注销和切换可见性 public class LoginLogoutWidget extends Compostite

我创建了一些定制的复合小部件,它监听事件(在我的例子中是loginEvent)。一旦捕捉到事件,小部件的状态就会改变,就像它应该看起来的那样(在我的例子中,我想将其中一个图标更改为用户已登录的信号)

但是,在捕获事件后,我是否可以根据新的状态使小部件再次绘制自身


我是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()和类似方法的各种过量调用。至少在我们开始离开那个库之前,它在我们的代码中出现了。侧钻,否则是好的。