Java中的颜色类
我有一个关于Java中awtJava中的颜色类,java,awt,Java,Awt,我有一个关于Java中awtColor类的问题 我目前正在使用类缩写,如Color.RED和Color.BLACK。我还有一个包含三个整数的列表,如下所示: int var1 = 0 int var2 = 0 int var3 = 255 有没有一种方法可以将这些整数转换成适当的JavaColorname?而无需任何帮助库,我会说:没有。特别是因为不是每个RGB颜色都有一个特定的名称。但是,您当然可以构建自己的函数,它尝试匹配一些可用的颜色,如果没有匹配,则提供类似“未知”的内容 理论上,可以
Color
类的问题
我目前正在使用类缩写,如Color.RED
和Color.BLACK
。我还有一个包含三个整数的列表,如下所示:
int var1 = 0
int var2 = 0
int var3 = 255
有没有一种方法可以将这些整数转换成适当的Java
Color
name?而无需任何帮助库,我会说:没有。特别是因为不是每个RGB颜色都有一个特定的名称。但是,您当然可以构建自己的函数,它尝试匹配一些可用的颜色,如果没有匹配,则提供类似“未知”的内容
理论上,可以使用Java反射API进行匹配尝试…而无需任何帮助库,我会说:不。特别是因为不是每个RGB颜色都有特定的名称。但是,您当然可以构建自己的函数,它尝试匹配一些可用的颜色,如果没有匹配,则提供类似“未知”的内容
理论上,可以使用Java反射API进行匹配尝试…而无需任何帮助库,我会说:不。特别是因为不是每个RGB颜色都有特定的名称。但是,您当然可以构建自己的函数,它尝试匹配一些可用的颜色,如果没有匹配,则提供类似“未知”的内容
理论上,可以使用Java反射API进行匹配尝试…而无需任何帮助库,我会说:不。特别是因为不是每个RGB颜色都有特定的名称。但是,您当然可以构建自己的函数,它尝试匹配一些可用的颜色,如果没有匹配,则提供类似“未知”的内容
理论上,可以使用Java反射API进行匹配尝试…据我所知,我们没有任何这样的库来直接访问常量中的颜色 但我们可以使用Java中的十六进制颜色库来管理它 参考资料:
据我所知,我们没有任何这样的库来直接访问常量中的颜色 但我们可以使用Java中的十六进制颜色库来管理它 参考资料:
据我所知,我们没有任何这样的库来直接访问常量中的颜色 但我们可以使用Java中的十六进制颜色库来管理它 参考资料:
据我所知,我们没有任何这样的库来直接访问常量中的颜色 但我们可以使用Java中的十六进制颜色库来管理它 参考资料:
这种行为没有设置函数,但您可以这样做:
public static String getColorName(int r, int g, int b) {
String[] colorNames = new String[] {
"BLACK",
"BLUE",
"GREEN",
"CYAN",
"DARK_GRAY",
"GRAY",
"LIGHT_GRAY",
"MAGENTA",
"ORANGE",
"PINK",
"RED",
"WHITE",
"YELLOW"
};
Color userProvidedColor = new Color(r,g,b);
Color color;
Field field;
for (String colorName : colorNames) {
try {
field = Class.forName("java.awt.Color").getField(colorName);
color = (Color)field.get(null);
if (color.equals(userProvidedColor)) {
return colorName; // Or maybe return colorName.toLowerCase() for aesthetics
}
} catch (Exception e) {
}
}
Color someOtherCustomDefinedColorMaybePurple = new Color(128,0,128);
if (someOtherCustomDefinedColorMaybePurple.equals(userProvidedColor)) {
return "Purple";
}
return "Undefined";
}
这里也有一些选择,也许你想要最接近的颜色?在这种情况下,您可以尝试以某种方式解析距离(这里是通过每个r、g、b坐标的距离,无可否认,这不是最好的方法,但对于本例来说非常简单。)
这种行为没有设置函数,但您可以这样做:
public static String getColorName(int r, int g, int b) {
String[] colorNames = new String[] {
"BLACK",
"BLUE",
"GREEN",
"CYAN",
"DARK_GRAY",
"GRAY",
"LIGHT_GRAY",
"MAGENTA",
"ORANGE",
"PINK",
"RED",
"WHITE",
"YELLOW"
};
Color userProvidedColor = new Color(r,g,b);
Color color;
Field field;
for (String colorName : colorNames) {
try {
field = Class.forName("java.awt.Color").getField(colorName);
color = (Color)field.get(null);
if (color.equals(userProvidedColor)) {
return colorName; // Or maybe return colorName.toLowerCase() for aesthetics
}
} catch (Exception e) {
}
}
Color someOtherCustomDefinedColorMaybePurple = new Color(128,0,128);
if (someOtherCustomDefinedColorMaybePurple.equals(userProvidedColor)) {
return "Purple";
}
return "Undefined";
}
这里也有一些选择,也许你想要最接近的颜色?在这种情况下,您可以尝试以某种方式解析距离(这里是通过每个r、g、b坐标的距离,无可否认,这不是最好的方法,但对于本例来说非常简单。)
这种行为没有设置函数,但您可以这样做:
public static String getColorName(int r, int g, int b) {
String[] colorNames = new String[] {
"BLACK",
"BLUE",
"GREEN",
"CYAN",
"DARK_GRAY",
"GRAY",
"LIGHT_GRAY",
"MAGENTA",
"ORANGE",
"PINK",
"RED",
"WHITE",
"YELLOW"
};
Color userProvidedColor = new Color(r,g,b);
Color color;
Field field;
for (String colorName : colorNames) {
try {
field = Class.forName("java.awt.Color").getField(colorName);
color = (Color)field.get(null);
if (color.equals(userProvidedColor)) {
return colorName; // Or maybe return colorName.toLowerCase() for aesthetics
}
} catch (Exception e) {
}
}
Color someOtherCustomDefinedColorMaybePurple = new Color(128,0,128);
if (someOtherCustomDefinedColorMaybePurple.equals(userProvidedColor)) {
return "Purple";
}
return "Undefined";
}
这里也有一些选择,也许你想要最接近的颜色?在这种情况下,您可以尝试以某种方式解析距离(这里是通过每个r、g、b坐标的距离,无可否认,这不是最好的方法,但对于本例来说非常简单。)
这种行为没有设置函数,但您可以这样做:
public static String getColorName(int r, int g, int b) {
String[] colorNames = new String[] {
"BLACK",
"BLUE",
"GREEN",
"CYAN",
"DARK_GRAY",
"GRAY",
"LIGHT_GRAY",
"MAGENTA",
"ORANGE",
"PINK",
"RED",
"WHITE",
"YELLOW"
};
Color userProvidedColor = new Color(r,g,b);
Color color;
Field field;
for (String colorName : colorNames) {
try {
field = Class.forName("java.awt.Color").getField(colorName);
color = (Color)field.get(null);
if (color.equals(userProvidedColor)) {
return colorName; // Or maybe return colorName.toLowerCase() for aesthetics
}
} catch (Exception e) {
}
}
Color someOtherCustomDefinedColorMaybePurple = new Color(128,0,128);
if (someOtherCustomDefinedColorMaybePurple.equals(userProvidedColor)) {
return "Purple";
}
return "Undefined";
}
这里也有一些选择,也许你想要最接近的颜色?在这种情况下,您可以尝试以某种方式解析距离(这里是通过每个r、g、b坐标的距离,无可否认,这不是最好的方法,但对于本例来说非常简单。)
用Java核心类中的单个方法无法做到这一点。但是,您可以通过两种方式轻松地完成这项工作 第一条路 使用现有的RGB值创建新的
颜色
:
Color color = new Color(var1, var2, var3);
Color color = new Color(var1, var2, var3);
然后
Color
类中获取对象[0]
获取该数组的第一个元素。如果没有与您的颜色匹配的预定义颜色,这将抛出一个ArrayIndexOutOfBoundsException
Color
s:
HashMap<Color, String> colors = new HashMap<Color, String>();
colors.put(Color.BLACK, "BLACK");
colors.put(Color.BLUE, "BLUE");
colors.put(Color.CYAN, "CYAN");
colors.put(Color.DARK_GRAY, "DARK_GRAY");
colors.put(Color.GRAY, "GRAY");
colors.put(Color.GREEN, "GREEN");
colors.put(Color.LIGHT_GRAY, "LIGHT_GRAY");
colors.put(Color.MAGENTA, "MAGENTA");
colors.put(Color.ORANGE, "ORANGE");
colors.put(Color.PINK, "PINK");
colors.put(Color.RED, "RED");
colors.put(Color.WHITE, "WHITE");
colors.put(new Color(192, 0, 255), "PURPLE");
colors.put(new Color(0xBADA55), "BADASS_GREEN");
colors.put(new Color(0, 0, 128), "DARK_BLUE");
最后,colors
中键color
的值:
String colorName = colors.get(color);
用Java核心类中的单个方法无法做到这一点。但是,您可以通过两种方式轻松地完成这项工作 第一条路 使用现有的RGB值创建新的
颜色
:
Color color = new Color(var1, var2, var3);
Color color = new Color(var1, var2, var3);
然后
Color
类中获取对象[0]
获取该数组的第一个元素。如果没有与您的颜色匹配的预定义颜色,这将抛出一个ArrayIndexOutOfBoundsException