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

如何从用户获取颜色作为String并在接受Color enum值的方法中使用它?

想法是获取用户选择的颜色并将值传递(或以任何其他方式处理情境)到方法element.setBackground(java.awt.Color)

我将创建一个Map并使用哪些String颜色名称映射到哪些Color对象来填充它。 你可以使用java.awt.Color自己的static Color常量 ,例如colorMap.put("BLACK", Color.BLACK); ,或者您可以插入自己的映射。 然后,您可以获取用户输入并使用get执行查找以get所需的正确Color对象。

此示例使用textField的内容来设置按下按钮时帧的颜色

  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); 

如果您能够获取所选颜色的数值并将其解析为String则可以调用Color.decode()方法。

例如白色:

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

来自javadoc:

 public static Color decode(String nm) throws NumberFormatException 

将String转换为整数并返回指定的不透明Color。 此方法处理用于表示八进制和hex数字的字符串格式。

参数: nm – 一个字符串,表示不透明颜色为24位整数

返回:新的Color对象。