Java-如何将Color.toString()转换为颜色?
为了在应用程序中保存图形对象的颜色属性,我将该颜色的字符串表示形式保存在数据文件中。 例如,对于red,我保存:Java-如何将Color.toString()转换为颜色?,java,colors,Java,Colors,为了在应用程序中保存图形对象的颜色属性,我将该颜色的字符串表示形式保存在数据文件中。 例如,对于red,我保存:java.awt.Color[r=255,g=0,b=0]。 如何将此字符串表示转换为颜色,以便在加载数据文件后再次使用 谢谢。来自 返回此颜色的字符串表示形式此方法仅用于调试目的。返回字符串的内容和格式可能因实现而异。返回的字符串可能为空,但不能为null 换句话说,我不指望能够将字符串反向转换为颜色。但是,如果您坚持这样做,您可以尝试解析字符串中的数字,并希望它能在没有任何保证的情
java.awt.Color[r=255,g=0,b=0]
。
如何将此字符串表示转换为颜色,以便在加载数据文件后再次使用
谢谢。来自 返回此
颜色的字符串表示形式
此方法仅用于调试目的。返回字符串的内容和格式可能因实现而异。返回的字符串可能为空,但不能为null
换句话说,我不指望能够将字符串反向转换为颜色。但是,如果您坚持这样做,您可以尝试解析字符串中的数字,并希望它能在没有任何保证的情况下工作
这样的事情现在似乎对我有效:
但是,我不建议实际执行此操作。使用“可能因实现而异”。而是保存String.valueOf(color.getRGB())
,以便以后重建。最简单的事情是重新考虑存储字符串表示的方式。去掉所有标签,只需将红色存储为字符串“0xFF0000”。然后,您可以轻松地解析该字符串以获取rgb的单个值,并将其发送到颜色构造函数
另一种方法是解析更复杂的字符串,因为您现在将其保存为“java.awt.Color[r=255,g=0,b=0]”
您可以在此处看到颜色的构造函数:
(在“所有类别”中搜索颜色)
Peter我建议您转而研究java的内置序列化技术。(我注意到颜色实现了序列化。)您可能希望使用getRGB()
而不是toString()
。你可以打电话
String colorS=Integer.toString(myColor.getRGB())代码>
然后你可以打电话
Color c=新颜色(Integer.parseInt(colorS))代码>使用getRGB()方法获取颜色的int表示形式,然后保存int值并使用该值重新创建颜色。无需解析。不要使用toString()
。使用getRGB()
/新颜色(rgb)
保存/恢复颜色的值。Stephan的回答帮助了我。但是,我发现我需要在语法中添加一个“true”来恢复颜色
// convert to string
String colorS = Integer.toString(myColor.getRGB());
// restore colour from string
Color c = new Color(Integer.parseInt(colorS), true);
我认为“INTEGER”需要大写字母I。谢谢。如果颜色是在另一个颜色空间中定义的呢?r/g/b毕竟可能是一个近似值。颜色应该按照建议在默认的sRGB颜色空间中重建。
// convert to string
String colorS = Integer.toString(myColor.getRGB());
// restore colour from string
Color c = new Color(Integer.parseInt(colorS), true);