从用户获取颜色作为字符串并在接受枚举值的方法中使用它?
如何从用户获取颜色作为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对象。