Как добавить собственное изображение в MGWT ImageButton

Я новичок в mgw t, я только что добавил ImageButton и просто пытаюсь вставить свое изображение в него

Это моя кнопка

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

в моем классе Java я назначаю этот ресурс изображения для этой кнопки

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

Но область изображения кнопки все еще черная

Я тоже так пробовал

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

Но не повезло

Какие-либо предложения

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;
  }
}

Точно так же вы создаете класс ImageHolderDefaultHighAppearance с myIcon_hdpi.png, так далее.

В вашем файле 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()

Другие вопросы по тегам