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

标签 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 上,

虽然我似乎无法让它发挥作用。他们有更好的方法吗?

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

然后我希望能够将此颜色保存到文本文件中。打开文本文件并加载它,虽然我已经准备好了这部分,但我还没有跨越从用户那里获取颜色的桥梁。抱歉,我仍在学习 java,因此对于任何明显的错误我深表歉意。

谢谢。

最佳答案

如果我绝对必须将颜色存储在文本文件中,我会使用 int getRGB() 方法,将数字转换为十六进制,并将 int 存储为字符串。然后将其解析回 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();
}

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

关于java - 从字符串输入获取颜色,getField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23311607/

相关文章:

java - 如何使用java从同一个tomcat中的不同项目获取tomcat项目路径

Java String.matches 正则表达式

java - 异构二叉搜索树

java - 什么时候应该在数据库应用程序中使用 OffsetDateTime、ZonedDateTime 和 Instant?

java - JTree:以编程方式选择所有节点

java - Java中的多线程

java - 将 foreach 重构为 for 循环

java - 实现属性(property)变更通知的最佳方式是什么?

java - 如何刷新 JPanel?

java - 制作系统托盘应用程序的有效方法