Java:将颜色字符串值转换为十六进制值
我正在尝试将颜色值更改为颜色hexa
代码。我的代码是这样的:
color = Integer.toHexString(colorpick.getValue().hashCode()).substring(0, 6).toUpperCase();
上述代码适用于除“黑色”以外的所有颜色
对于“黑色”颜色,它给出以下错误
String index out of range : 6 error
请问我的问题有什么解决办法吗
你可以在下面搜索框中键入要查询的问题!
我正在尝试将颜色值更改为颜色hexa
代码。我的代码是这样的:
color = Integer.toHexString(colorpick.getValue().hashCode()).substring(0, 6).toUpperCase();
上述代码适用于除“黑色”以外的所有颜色
对于“黑色”颜色,它给出以下错误
String index out of range : 6 error
请问我的问题有什么解决办法吗
# 1 楼答案
使用try-catch函数来处理它。如果错误为hexa
# 2 楼答案
这绝对是错误的:
hashcode是JVM生成的特定代码,用于管理与实例和哈希表相关的哈希数。。。与颜色无关
这应该很好
# 3 楼答案
既然您没有提到变量“colorpick”是什么类,我就假设它是ColorPicker(https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/ColorPicker.html)
我不认为它的hashcode()方法会被重写以十六进制返回RGB值
错误的原因是black的RGB值为0。应用。toHexString()只会给你一个字符“0”,因此。子字符串()将不起作用。其他RGB值也可能导致字符串短于6
我假设你希望结果总是6位数;然后,如果字符串较短,则应从开始处用0填充字符串
编辑 颜色选择器。getValue()返回颜色对象,而不是RGB值。 所以你应该使用colorpick。getValue()。改为getRGB()
https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html#getRGB()
Edit2
有没有。getRGB():