Для сохранения Атрибутов цвета графического объекта в моем приложении я сохранил строковое представление этого, Раскрашивают файл данных. Например, для красного я сохраняю: java.awt.Color[r=255,g=0,b=0]
. Как я могу преобразовать это строковое представление в Цвет так, чтобы я мог использовать его снова после загрузки моего файла данных?
Спасибо.
Использование toString ()
«может различаться в зависимости от реализации». Вместо этого сохраните String.valueOf (color.getRGB ())
для последующего восстановления.
Я предлагаю вам вместо этого изучить встроенную технологию сериализации Java. (Замечу, что Color реализует Serializable.)
Самый простой способ - это переосмыслить способ хранения строкового представления. Избавьтесь от всех надписей и просто сохраните красный цвет как строку «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)
для сохранения/восстановления значения цвета.
Возможно, вы захотите использовать getRGB()
вместо toString()
. Вы можете вызвать
String colorS = Integer.toString(myColor.getRGB());
Затем вы можете вызвать
Color c = new Color(Integer.parseInt(colorS));
Используйте метод getRGB() для получения int-представления цвета, затем сохраните значение int и воссоздайте цвет, используя это значение. Разбор не требуется.
Из документации Color # toString
Возвращает строковое представление этого
Color
. Этот метод предназначен для использования только в целях отладки. Содержимое и формат возвращаемой строки могут различаться в зависимости от реализации. Возвращенная строка может быть пустой, но не может бытьнулевой
.
Другими словами, я бы не стал полагаться на возможность обратного преобразования строки в 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());
Я не рекомендую делать это на самом деле.