在GWT中使用颜色类
我想在GWT客户端使用颜色 我想要这种颜色在GWT中使用颜色类,gwt,Gwt,我想在GWT客户端使用颜色 我想要这种颜色 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
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。您使用的是AWT类的
颜色
GWT != Java . //so gwt compiler wont compile the awt classes
用这个代替
只需将该类复制到您的实用程序包中
,并在客户端使用它
您在这里使用的是AWTAPI颜色。但是GWT并没有模仿这个库。参考:
您可以编写一个简单的RGB到字符串转换器:
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();
}
公共静态字符串RgbToHex(int r、int g、int b){
StringBuilder sb=新的StringBuilder();
某人附加(“#”)
.append(intTo2BytesStr(r))
.append(intTo2BytesStr(g))
.附加(intTo2BytesStr(b));
使某人返回字符串();
}
专用静态字符串intTo2BytesStr(int i){
返回pad(Integer.tohextstring(intTo2Bytes(i));
}
专用静态整数intTo2Bytes(整数i){
返回值(i<0)?0:(i>255)?255:i;
}
专用静态字符串填充(字符串str){
StringBuilder sb=新的StringBuilder(str);
如果(sb.length()根据FFire的回答,这里有一个更正确的RgbToHex
方法版本(该版本适用于小于16的r/g/b值):
public静态字符串rgbToHex(final int r,final int g,final int b){
返回“#”+(r<16?“0”:“”)+Integer.tohextstring(r)+(g<16?“0”:“”)+
整数.toHexString(g)+(b<16?:“)+整数.toHexString(b);
}
当然,如果您愿意,您可以使用StringBuilder
。谢谢,实际上我在CellTable中使用它来扩展行,所以我以前使用它来设置列的颜色:td.style().trustedBackgroundColor(“蓝色”);::现在它除了字符串之外什么都不拿,我可以用任何方式把这些RGB颜色给我的celltable单元格。可能这个方法只拿w3c诽谤的颜色。这是标准颜色的列表。谢谢,+1这个列表,它会很有帮助,但理想的情况是有一些方法可以把我自己的RGB颜色放到我的celltable单元格中。你试过getHexValue()吗方法,它将返回像“#000000”这样的颜色代码,然后您可以通过我认为。我认为这对于16进制(10十六进制)以下的R/G/B值不起作用…例如,(5,10,20)将导致一个包含“#5a14”的字符串…这不是你想要的!@Andy King说得对。但这里还有一些其他问题:1.int的负值。2.value>大于255。@f确实,你可以添加无效值的检查;我只是指出,有效值没有正确处理。(顺便说一句,我建议,如果要使用StringBuilder
,应该在助手例程中传递一个对象,而不是每次调用RgbToHex
方法时创建四个StringBuilder
实例)。
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);
}