Java: ¿Cómo obtener el nombre de los colores en Java a partir de valores hexadecimales o RGB?

Los colores especificados en “java.awt.Color” son solo accesos directos para colores fácilmente disponibles. Dados los valores RGB (digamos 50,100,75 por ejemplo), puede crear una instancia de Color de ese color exacto.

Color c = new Color(50,100,75);

Si realmente quisiera los nombres, y quisiera que se ajustara a las definiciones de los colores especificados por esta clase, tendría que iterar sobre cada uno de los colores y comparar. Y la parte molesta … es que esos colores no están definidos en una enumeración sofisticada … así que tienes que construir tu propia lista (o usar un reflejo aún más elegante pero horriblemente diseñado). Para que sea simple:

  import java.awt.Color;

 enumeración pública JavaColor {
     ROJO (Color.RED),
     AZUL (Color. AZUL),
     VERDE (Color.GREEN),
     ... Haz todos los colores ...

     color de color final privado;  // en metros
     Planeta (color color) {
         this.color = color;
     }

     public Color getColor () {
         color de retorno;
     }

 }

 Color myColor = nuevo Color (50,100,75);
 Color javaColor = nulo;
 para (JavaColor jc: JavaColor.values ​​()) {
     if (jc.getColor (). igual a (myColor))
         javaColor = jc.getColor ();
 }
 if (javaColor == null) {
     System.out.println ("Sus valores RGB no coinciden con ningún color Java");
 } más {
     System.out.println ("Sus valores RGB coinciden con el color Java \"% s \ ".", JavaColor);
 } 

El uso de cadenas con valores hexadecimales no es muy diferente, pero java.awt.Color solo proporciona constructores para manejar RGB, por lo que primero debe convertirlo:

¿Cómo convertir hexadecimal a rgb?

Pero solo copia y pega eso 🙂