如何在Java中将颜色名称转换为十六进制值

时间:2018-10-05 11:38:08

标签: java hex

我的颜色名称为String ("RED"),我需要将其转换为十六进制。如何实现此目的。

您甚至可以使用Java进行转换吗?

由于我使用了awt软件包,

Color getColor = Color.getColor(color);
String hexCode = "#" + Integer.toHexString(getColor.getRGB()).substring(2).toUpperCase();

注意:我不想使用java.awt.Color软件包

4 个答案:

答案 0 :(得分:1)

如果您不想使用任何其他类,则可以通过仅使用查找表(仅是地图)来实现。

String color = "RED";

Map<String, String> lookupTable = new TreeMap<>();
lookupTable.put("RED", "#ff0000");
System.out.println(lookupTable.get(color));

答案 1 :(得分:1)

使用JavaFX Color

javafx.scene.paint.Color orange = javafx.scene.paint.Color.web("orange");

剩下的你知道。

答案 2 :(得分:0)

您需要使用java.awt.Color:/,

如果不想使用它,则需要将每种颜色手动添加到数组中,然后从数组中获取值。

或者使用一些在线API, 像http://www.thecolorapi.com

答案 3 :(得分:0)

我认为您应该使用java.awt.Color类所建议的方法。 例如,您可以使用此方法从名称转换为颜色:

public static Color stringToColor(final String value) {
    if (value == null) {
      return Color.black;
    }
    try {
      // get color by hex or octal value
      return Color.decode(value);
    } catch (NumberFormatException nfe) {
      // if we can't decode lets try to get it by name
      try {
        // try to get a color by name using reflection
        final Field f = Color.class.getField(value);

        return (Color) f.get(null);
      } catch (Exception ce) {
        // if we can't get any color return black
        return Color.black;
      }
    }
  }

一旦有了颜色,就可以得到他的十六进制值,如下所示:

String hex = "#"+Integer.toHexString(your_color.getRGB()).substring(2);

如果您不想使用java.awt.Color(因为您说的很旧),可以尝试使用“ javafx.scene.paint.Color”来实现相同的功能