Java – 如何将Color.toString()转换为Color?
为了在我的应用程序中保存图形对象的Color属性,我将此Color的字符串表示保存在数据文件中。 例如,对于red我保存: java.awt.Color[r=255,g=0,b=0]
。 如何将此字符串表示转换为颜色,以便我可以在加载数据文件后再次使用它?
谢谢。
使用toString()
“可能会因实现而异。” 而是保存String.valueOf(color.getRGB())
以便以后重建。
您可能希望使用getRGB()
而不是toString()
。 你可以打电话
String colorS = Integer.toString(myColor.getRGB());
然后你可以打电话
Color c = new Color(Integer.parseInt(colorS));
从Color#toString
的文档
返回此
Color
的字符串表示forms。 此方法仅用于调试目的。 返回字符串的内容和格式可能因实现而异。 返回的字符串可能为空,但不能为null
。
换句话说,我不会依赖于能够将字符串反向转换为Color
。 但是,如果你坚持这样做,你可以尝试解析字符串中的数字,并希望它不会有任何保证。
这样的事似乎对我现在有用 :
Scanner sc = new Scanner("java.awt.Color[r=1,g=2,b=3]"); sc.useDelimiter("\\D+"); Color color = new Color(sc.nextInt(), sc.nextInt(), sc.nextInt());
但是,我不建议实际执行此操作。
我建议你研究一下java的内置序列化技术。 (我注意到Color实现了Serializable。)
使用getRGB()方法获取Color的int表示,然后保存int值并使用该值重新创建Color。 无需解析。
最简单的方法是重新考虑存储字符串表示的方式。 摆脱所有标签,只需将红色存储为字符串“0xFF0000”。 然后,您可以轻松地解析该字符串以获取rgb的单个值,并将其发送到Color构造函数。
另一种方法是解析更复杂的字符串,因为您现在正在保存它“java.awt.Color [r = 255,g = 0,b = 0]”。
你可以在这里看到Color的构造函数: http : //java.sun.com/javase/6/docs/api/ (搜索Color的“所有类”)。
彼得
不要使用toString()
。 使用getRGB()
/ new Color(rgb)
来保存/恢复颜色的值。
斯蒂芬的回答帮助了我。 但是,我发现我需要在语法中添加“true”才能恢复颜色。
// convert to string String colorS = Integer.toString(myColor.getRGB()); // restore colour from string Color c = new Color(Integer.parseInt(colorS), true);