我想在我的GWT客户端使用Color,
我想要这种颜色
public static Color myColor = new Color( 152, 207, 204) ;
如果我使用此导入
import java.awt.Color;
在客户端,它给了我错误:
No source code is available for type java.awt.Color; did you forget to inherit a required module
如何在GWT客户端使用RGB颜色,不使用CSS。
答案 0 :(得分:4)
您可以编写一个简单的RGB-to-String转换器:
public final class Helper {
public static String RgbToHex(int r, int g, int b){
StringBuilder sb = new StringBuilder();
sb.append('#')
.append(Integer.toHexString(r))
.append(Integer.toHexString(g))
.append(Integer.toHexString(b));
return sb.toString();
}
}
并使用它:
nameField.getElement().getStyle().setBackgroundColor(Helper.RgbToHex(50, 100, 150));
<强> --- ---更新强>
控制负值的更复杂方式,大于255和0-15值。
public static String RgbToHex(int r, int g, int b){
StringBuilder sb = new StringBuilder();
sb.append('#')
.append(intTo2BytesStr(r))
.append(intTo2BytesStr(g))
.append(intTo2BytesStr(b));
return sb.toString();
}
private static String intTo2BytesStr(int i) {
return pad(Integer.toHexString(intTo2Bytes(i)));
}
private static int intTo2Bytes(int i){
return (i < 0) ? 0 : (i > 255) ? 255 : i;
}
private static String pad(String str){
StringBuilder sb = new StringBuilder(str);
if (sb.length()<2){
sb.insert(0, '0');
}
return sb.toString();
}
答案 1 :(得分:2)
您正在使用Color
的AWT课程。
GWT != Java . //so gwt compiler wont compile the awt classes
只需将该类复制到utility package
并在client side
上使用。
答案 2 :(得分:0)
你在这里使用了awt api颜色。但GWT不会模拟这个库。参阅:
答案 3 :(得分:0)
这是FFire答案中RgbToHex
方法的更正确版本(此版本适用于r / g / b值小于16的情况):
public static String rgbToHex(final int r, final int g, final int b) {
return "#" + (r < 16 ? "0" : "") + Integer.toHexString(r) + (g < 16 ? "0" : "") +
Integer.toHexString(g) + (b < 16 ? "0" : "") + Integer.toHexString(b);
}
当然,如果您愿意,可以使用StringBuilder
。