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