从字符串输入获取颜色,getField

时间:2014-04-26 13:30:15

标签: java

问题:我希望用户输入颜色(红色,蓝色)并将其转换为与颜色一起使用

我一直在看这个

Getting a Color from a String input, 我知道最好使用JColorChooser或类似的东西,尽管我没有那个奢侈品。这是可接受的答案。

String text = "red";
Color color;
Field field = Class.forName("java.awt.Color").getField(text.toLowerCase()); // toLowerCase because the color fields are RED or red, not Red
color = (Color)field.get(null);

从这个答案中我发现它真的只是在结合" .RED"到java.awt.Color,

虽然我似乎无法让这个工作。他们是更好的方法吗?

我这样做的原因是在一个简单的程序中,它会向用户询问颜色("红色,蓝色,黄色等")

然后我希望能够将此颜色保存到文本文件中。打开文本文件并加载它,虽然我已经准备好了这个部分,但我没有越过从用户那里获取颜色的brigde。对不起,我还在学习java,所以我为任何明显的错误道歉。

感谢。

1 个答案:

答案 0 :(得分:1)

如果我必须将我的颜色存储在文本文件中,我将使用int getRGB()方法,将数字转换为十六进制,并将int存储为String。然后将其解析回int,然后颜色将是微不足道的。

如,

public static void writeOutMethod1(File file, List<Color> colorList) throws FileNotFoundException {
  PrintWriter pw = new PrintWriter(file);
  for (Color color : colorList) {
     pw.printf("%08x ", color.getRGB());
  }
  pw.close();
}

如果我必须使用人类可理解的字符串,我会创建自己的Map以将字符串与颜色相关联。