我是mgwt的新手, 我刚刚添加了ImageButton,只是尝试将自定义图像放入其中
这是我的按钮
<b:ImageButton ui:field="imgButton_settings" > Settings </b:ImageButton>
在我的java类中,我将此图像资源分配给此按钮
imgButton_settings.setIcon(Resources.INSTANCE.myIcon());
但按钮图像区域仍为黑色
我也试过这种方式
ImageButton imageButton = new ImageButton("logo.png");
但没有运气
任何建议
答案 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()