如何在MGWT ImageButton中添加自定义图像

时间:2014-10-03 11:02:58

标签: mgwt

我是mgwt的新手, 我刚刚添加了ImageButton,只是尝试将自定义图像放入其中

这是我的按钮

   <b:ImageButton ui:field="imgButton_settings" > Settings   </b:ImageButton>

在我的java类中,我将此图像资源分配给此按钮

      imgButton_settings.setIcon(Resources.INSTANCE.myIcon());

但按钮图像区域仍为黑色

我也试过这种方式

  ImageButton imageButton = new ImageButton("logo.png");

但没有运气

任何建议

1 个答案:

答案 0 :(得分:1)

你需要几节课。首先,是添加图像的图像持有者:

public class ImageHolder {
  private static final Appearance APPEARANCE = GWT.create(Appearance.class);

  public interface Appearance {
    public interface Images {
      ImageResource myIcon();
    }
    Images get();
  }

  public static Appearance.Images get() {
    return APPEARANCE.get();
  }
}

然后,您可以定义3个或4个类,以根据设备像素密度获得不同的图像:

public class ImageHolderDefaultAppearance implements ImageHolder.Appearance {
  interface Resources extends ClientBundle, Images {
    Resources INSTANCE = GWT.create(Resources.class);

    @Override
    @Source("myIcon_mdpi.png")
    ImageResource myIcon();
  }

  @Override
  public Images get() {
    return Resources.INSTANCE;
  }
}

同样,您使用myIcon_hdpi.png等创建一个ImageHolderDefaultHighAppearance类。

在此模块的gwt.xml文件中,您需要定义延迟绑定规则:

  <replace-with class="com.myClient.icons.ImageHolderDefaultAppearance">
    <when-type-is class="com.myClient.icons.ImageHolder.Appearance" />
  </replace-with>
  <replace-with class="com.myClient.icons.ImageHolderDefaultHighAppearance">
    <when-type-is class="com.myClient.icons.ImageHolder.Appearance" />
    <when-property-is name="mgwt.density" value="high" />
  </replace-with>
  <replace-with class="com.myClient.icons.ImageHolderDefaultXHighAppearance">
    <when-type-is class="com.myClient.icons.ImageHolder.Appearance" />
    <when-property-is name="mgwt.density" value="xhigh" />
  </replace-with>

现在,您可以通过调用ImageHolder.get().myIcon()

在应用中使用这些图标