I have a question regarding the awt Color class in Java.
I am currently using the class abbreviations such as Color.RED and Color.BLACK. I also have a list of three integers such as the following:
int var1 = 0
int var2 = 0
int var3 = 255
Is there a method to convert these integers into the appropriate Java Color name?
解决方案
There is no way to do this with a single method in the Java core classes. However, you can fairly easily do this yourself in two ways.
First way
Create a new Color out of the RGB values you have:
Color color = new Color(var1, var2, var3);
Then
Get the Class object from the Color class with getClass().
Get the elements from that with getEnumConstants().
Stream it using Arrays.stream()
Filter it by calling filter(), so it only contains all the enum constants that equal the color you made (there should be either one or zero).
Use toArray() to turn the stream into an array.
Get the first element of that array with [0]. This will throw an ArrayIndexOutOfBoundsException if there isn't a predefined color matching your color.
Get the name of that color with Enum's toString().
String colorName = Arrays.stream(Color.getClass().getEnumConstants())
.filter(c -> c.equals(color))
.toArray()[0]
.toString();
Second way
First, create a HashMap of Colors that contains all the colors you want:
HashMap colors = new HashMap();
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");
Then, create a new Color out of the RGB values you have:
Color color = new Color(var1, var2, var3);
Last, get the value in colors for the key color:
String colorName = colors.get(color);