你可以寫一個簡單的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();
}
謝謝:),完美工作 – junaidp 2013-03-14 08:34:10
我不認爲這對R/G/B值小於16十進制(10十六進制)的情況很好......例如(5,10,20)將導致包含「#5a14」的字符串...不是你想要的! – 2013-03-18 04:45:25
@安迪金你對。但是這裏還有其他一些問題:1. int的負值。 2.值> 255。 – FFire 2013-03-18 08:27:29