爲了在我的應用程序中保存圖形對象的顏色屬性,我將此Color的字符串表示保存在數據文件中。例如,對於紅色,我保存:java.awt.Color[r=255,g=0,b=0]
。 如何將此字符串表示轉換爲Color,以便在加載我的數據文件後再次使用它?Java - 如何將Color.toString()轉換爲Color?
謝謝。
爲了在我的應用程序中保存圖形對象的顏色屬性,我將此Color的字符串表示保存在數據文件中。例如,對於紅色,我保存:java.awt.Color[r=255,g=0,b=0]
。 如何將此字符串表示轉換爲Color,以便在加載我的數據文件後再次使用它?Java - 如何將Color.toString()轉換爲Color?
謝謝。
使用toString()
」可能因實現而有所不同「。相反,保存String.valueOf(color.getRGB())
以備後續重建。
的文檔返回此
Color
的字符串表示。 此方法僅用於調試目的。返回的字符串的內容和格式可能因實現而異。返回的字符串可能爲空,但不能爲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());
其實我並不推薦這樣做,但是。 「
最簡單的是重新考慮你存儲字符串表示的方式。擺脫所有標籤,並將字符串「0xFF0000」存儲爲紅色。然後,您可以輕鬆地解析該字符串以獲取rgb的單個值,並將其發送給Color構造函數。
另一種方法是解析更復雜的字符串,因爲您現在將它保存爲「java.awt.Color [r = 255,g = 0,b = 0]」。
您可以在此處看到Color的構造函數: http://java.sun.com/javase/6/docs/api/(在Color中搜索「所有類」)。
彼得
我建議你看看java的內置序列化技術。 (我注意到Color實現了Serializable。)
您不妨使用getRGB()
而不是toString()
。您可以撥打
String colorS = Integer.toString(myColor.getRGB());
然後就可以調用
Color c = new Color(Integer.parseInt(colorS));
使用的getRGB()方法來獲取顏色的INT表示,然後保存int值,並重新創建顏色使用該值。不需要解析。
請勿使用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);
我認爲「整合者」需要一個資本I.謝謝。 – jackdh 2014-04-26 13:20:44