0

我有 2 个图像,我想根据按钮单击在它们之间交换

private Image widget1 = new Image("images/AU-wp5.jpg");
private Image widget2 = new Image("images/GB-wp1.jpg");
private boolean flag = false;

private void onClick()
{
    flag = !flag;
    if(flag)
    {                       
        RootPanel.get("stockList").add(widget1);
        RootPanel.get("stockList").remove(widget2);
    }
    else
    {           
        RootPanel.get("stockList").add(widget2);
        RootPanel.get("stockList").remove(widget1);
    }
}

这是在图像之间交换的正确方法吗?我已经读过关于拥有一个图像并更改其网址但无法以这种方式工作的信息,只能这样。

4

2 回答 2

0

如果您确定图像已修复,那么您应该考虑使用 GWT 的 Dev Guided Client Bundle 功能以确保最佳优化和性能。相关部分https://developers.google.com/web-toolkit/doc/latest/DevGuideClientBundle#ImageResource

其使用的最佳示例是在树节点 + 和 - 符号切换中。

http://code.google.com/p/google-web-toolkit/source/search?q=CellTree&origq=CellTree&btnG=Search+Trunk

  public interface BasicResources extends Resources {

    @ImageOptions(flipRtl = true)
    ImageResource cellTreeClosedItem();

    @ImageOptions(flipRtl = true)
    @Source("cellTreeLoadingBasic.gif")
    ImageResource cellTreeLoading();

    @ImageOptions(flipRtl = true)
    ImageResource cellTreeOpenItem();

    /**
     * The styles used in this widget.
     */
    @Source(BasicStyle.DEFAULT_CSS)
    BasicStyle cellTreeStyle();
  }
于 2012-12-20T16:01:10.057 回答
0

正如 SSR 所提到的,您可以通过单元资源来完成,或者您可以选择使用 CSS 的更简单且推荐的方法。

Button button = new Button ( "Click me" );
private boolean flag = true;
button.addClickHandler ( new ClickHandler() 
{
     public void OnClick()
     {
             b.setStyleName( "my-button-clicked-" + flag );
             flag = !flag;
     }
}

你的 CSS 可能看起来像这样

.my-button-clicked-true{
 background : url ( // image path )
}

.my-button-clicked-false{
 background : url ( // image path )
}
于 2012-12-20T17:15:40.420 回答