Java 从用户处获取颜色作为字符串,并在接受枚举值的方法中使用它?

Java 从用户处获取颜色作为字符串,并在接受枚举值的方法中使用它?,java,colors,enums,awt,Java,Colors,Enums,Awt,如何从用户处获取颜色作为字符串,并在接受颜色枚举值的方法中使用它 想法是获得用户选择的颜色,并将值(或以任何其他方式处理情况)传递给方法元素。setBackground(java.awt.color)我将创建一个映射并用字符串颜色映射到颜色对象的颜色名称填充它。您可以使用,例如,colorMap.put(“黑色”,Color.BLACK),或者您可以插入自己的映射。然后,您可以接受用户输入并使用get执行查找,以获得所需的适当颜色对象。此示例使用文本字段的内容来设置按下按钮时帧的颜色

如何从用户处获取颜色作为
字符串
,并在接受
颜色枚举
值的方法中使用它


想法是获得用户选择的颜色,并将值(或以任何其他方式处理情况)传递给方法
元素。setBackground(java.awt.color)

我将创建一个
映射
并用
字符串
颜色映射到
颜色对象的颜色名称填充它。您可以使用,例如,
colorMap.put(“黑色”,Color.BLACK),或者您可以插入自己的映射。然后,您可以接受用户输入并使用
get
执行查找,以获得所需的适当
颜色对象。

此示例使用文本字段的内容来设置按下按钮时帧的颜色

        Field field = null;
        try {
            field = Color.class.getField(textField.getText().toString());
        } catch (NoSuchFieldException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (SecurityException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        Color color = null;
        try {
            color = (Color)field.get(null);
        } catch (IllegalArgumentException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (IllegalAccessException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        frame.getContentPane().setBackground(color);

如果您能够获取所选颜色的数值并将其解析为
字符串
,则可以调用方法

例如白色:

element.setBackground(Color.decode("077777777")); // octal format
element.setBackground(Color.decode("0xFFFFFF")); // hexa format
element.setBackground(Color.decode("16777215")); // decimal format
从javadoc:

将字符串转换为整数并返回指定的值 颜色此方法处理用于表示的字符串格式 八进制数和十六进制数

参数:
nm
-将不透明颜色表示为24位整数的字符串

返回: 新的颜色对象


抱歉,这是一个对用户不友好的解决方案。只有使用自然语言输入。没有问题,但是考虑在你的问题中加上这一点,因为这与你的要求非常相关。@MindaguasBernataviči可能的副本
public static Color decode(String nm)
                    throws NumberFormatException