Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的颜色类_Java_Awt - Fatal编程技术网

Java中的颜色类

Java中的颜色类,java,awt,Java,Awt,我有一个关于Java中awtColor类的问题 我目前正在使用类缩写,如Color.RED和Color.BLACK。我还有一个包含三个整数的列表,如下所示: int var1 = 0 int var2 = 0 int var3 = 255 有没有一种方法可以将这些整数转换成适当的JavaColorname?而无需任何帮助库,我会说:没有。特别是因为不是每个RGB颜色都有一个特定的名称。但是,您当然可以构建自己的函数,它尝试匹配一些可用的颜色,如果没有匹配,则提供类似“未知”的内容 理论上,可以

我有一个关于Java中awt
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
  • 使用的获取该颜色的名称
  • 第二条路 首先