Как добавить собственное изображение в 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()