Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-如何将Color.toString()转换为颜色?_Java_Colors - Fatal编程技术网

Java-如何将Color.toString()转换为颜色?

Java-如何将Color.toString()转换为颜色?,java,colors,Java,Colors,为了在应用程序中保存图形对象的颜色属性,我将该颜色的字符串表示形式保存在数据文件中。 例如,对于red,我保存:java.awt.Color[r=255,g=0,b=0]。 如何将此字符串表示转换为颜色,以便在加载数据文件后再次使用 谢谢。来自 返回此颜色的字符串表示形式此方法仅用于调试目的。返回字符串的内容和格式可能因实现而异。返回的字符串可能为空,但不能为null 换句话说,我不指望能够将字符串反向转换为颜色。但是,如果您坚持这样做,您可以尝试解析字符串中的数字,并希望它能在没有任何保证的情

为了在应用程序中保存图形对象的颜色属性,我将该颜色的字符串表示形式保存在数据文件中。 例如,对于red,我保存:
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);