Java:将颜色字符串值转换为十六进制值

Java:将颜色字符串值转换为十六进制值,java,string,colors,hex,Java,String,Colors,Hex,我正在尝试将颜色值更改为颜色hexacode。因此,我的代码如下: color = Integer.toHexString(colorpick.getValue().hashCode()).substring(0, 6).toUpperCase(); 上述代码适用于除“黑色”以外的所有颜色 String index out of range : 6 error 它为“黑色”颜色提供以下错误 String index out of range : 6 error 请问我的问题有什么解决办法吗

我正在尝试将颜色值更改为颜色
hexa
code。因此,我的代码如下:

color = Integer.toHexString(colorpick.getValue().hashCode()).substring(0, 6).toUpperCase();
上述代码适用于除“黑色”以外的所有颜色

String index out of range : 6 error
它为“黑色”颜色提供以下错误

String index out of range : 6 error

请问我的问题有什么解决办法吗?

这里绝对错误:

colorpick.getValue().hashCode()
hashcode是JVM生成的特定代码,用于管理与实例和哈希表相关的哈希数。。。与颜色无关

这应该很好

colorpick.getValue()

这是绝对错误的:

colorpick.getValue().hashCode()
hashcode是JVM生成的特定代码,用于管理与实例和哈希表相关的哈希数。。。与颜色无关

这应该很好

colorpick.getValue()

因为您没有提到变量“colorpick”是什么类,所以我假设它是ColorPicker()

我不认为它的hashcode()方法被重写以十六进制返回RGB值

错误的原因是black的RGB值为0。应用.toHexString()只会给您一个字符“0”,因此.substring()将不起作用。其他RGB值也可能导致字符串短于6

我假设您希望结果始终为6位数字;然后,如果字符串较短,则应从开始处用0填充该字符串

编辑 getValue()返回颜色对象,而不是RGB值。 因此,您应该使用colorpick.getValue().getRGB()

Edit2
带和不带.getRGB():

Color c=Color.CYAN;
字符串s=Integer.toHexString(c.getRGB()&0xFFFFFF.toUpperCase();
StringBuilder sb=新的StringBuilder();
对于(int i=0;i<6-s.length();i++){
某人附加(“0”);
}
某人追加;
System.out.println(sb.toString());
颜色c=颜色青色;

int rgbValue=(c.getRed()因为您没有提到变量“colorpick”是什么类,所以我假设它是ColorPicker()

我不认为它的hashcode()方法被重写以十六进制返回RGB值

错误的原因是black的RGB值为0。应用.toHexString()只会给您一个字符“0”,因此.substring()将不起作用。其他RGB值也可能导致字符串短于6

我假设您希望结果始终为6位数字;如果字符串较短,则应该从开始处用0填充字符串

编辑 getValue()返回颜色对象,而不是RGB值。 因此,您应该使用colorpick.getValue().getRGB()

Edit2
带和不带.getRGB():

Color c=Color.CYAN;
字符串s=Integer.toHexString(c.getRGB()&0xFFFFFF.toUpperCase();
StringBuilder sb=新的StringBuilder();
对于(int i=0;i<6-s.length();i++){
某人附加(“0”);
}
某人追加;
System.out.println(sb.toString());
颜色c=颜色青色;


int rgbValue=(c.getRed()使用try-catch函数来处理它。如果错误为hexa,则使用try-catch函数来处理它。如果错误为hexa,则使用try-catch函数来处理它。好的,很酷的故事,尽管缺少角色开发。你有问题吗?问清楚!!!我想你的意思是,你的代码为输入值“Black”给出了错误.是吗?检查
colorpick.getValue()
的返回值。我想,问题就出在这一部分。是的,我的问题是为什么它适用于除黑色之外的所有颜色好的,很酷的故事,尽管缺少角色开发。你有问题吗?问清楚!!!我想你的意思是,你的代码给了输入值错误“黑色”。对吗?检查
colorpick.getValue()
的返回值。我想,问题就出在这一部分。是的,我的问题是,当我运行代码
System.out.println(Integer.toHexString(color.Black.hashCode())时,为什么它适用于除黑色以外的所有颜色;
,它给我的结果是
ff000000
。因此,我认为问题不是来自
hashCode()
。颜色的hashCode方法来自
int java.awt.color.hashCode()
。因此,它与使用相关。当我删除子字符串时,我得到了这个错误,方法是toHexString(int)在类型中,当我运行代码
System.out.println(Integer.toHexString(Color.BLACK.hashCode());
时,Integer不适用于参数(Color)。它给我结果
ff000000
。因此,我认为问题不是来自
hashCode()
。而Color的hashCode方法来自
int java.awt.Color.hashCode())
。因此,它与使用有关。当我删除子字符串时出现此错误,Integer类型中的toHexString(int)方法不适用于上述参数(颜色),当我尝试仅使用时出现错误。getValue()找不到getRGB是否正常?我只能看到getRed(),get Blue()和getGreen(),根据Java API文档,.getRGB()是从JDK1.0()开始出现的。如上所述,当我尝试只使用.getValue()时出现错误,我找不到getRGB是否正常?根据Java API文档,我只能看到getRed()、get Blue()和getGreen()。getRGB()是从JDK1.0()开始出现的。这不是答案。你应该在问题下写评论。这不是答案。你应该在问题下写评论。