Java - Как преобразовать Color.toString () в Цвет?

Для сохранения Атрибутов цвета графического объекта в моем приложении я сохранил строковое представление этого, Раскрашивают файл данных. Например, для красного я сохраняю: java.awt.Color[r=255,g=0,b=0]. Как я могу преобразовать это строковое представление в Цвет так, чтобы я мог использовать его снова после загрузки моего файла данных?

Спасибо.

10
задан Amokrane Chentir 10 March 2011 в 22:19
поделиться

7 ответов

Использование toString () «может различаться в зависимости от реализации». Вместо этого сохраните String.valueOf (color.getRGB ()) для последующего восстановления.

10
ответ дан 3 December 2019 в 13:51
поделиться

Я предлагаю вам вместо этого изучить встроенную технологию сериализации Java. (Замечу, что Color реализует Serializable.)

3
ответ дан 3 December 2019 в 13:51
поделиться

Самый простой способ - это переосмыслить способ хранения строкового представления. Избавьтесь от всех надписей и просто сохраните красный цвет как строку «0xFF0000». Затем вы можете легко проанализировать эту строку, чтобы получить единственное значение для rgb, и отправить его в конструктор Color.

Альтернативой является синтаксический анализ более сложной строки, поскольку вы сейчас ее сохраняете «java.awt.Color [r = 255, g = 0, b = 0]».

Вы можете увидеть конструкторы для Color здесь: http://java.sun.com/javase/6/docs/api/ (поиск «все классы» для Color) .

Питер

2
ответ дан 3 December 2019 в 13:51
поделиться

Не используйте toString(). Используйте getRGB() / new Color(rgb) для сохранения/восстановления значения цвета.

2
ответ дан 3 December 2019 в 13:51
поделиться

Возможно, вы захотите использовать getRGB() вместо toString(). Вы можете вызвать

String colorS = Integer.toString(myColor.getRGB());

Затем вы можете вызвать

Color c = new Color(Integer.parseInt(colorS));

16
ответ дан 3 December 2019 в 13:51
поделиться

Используйте метод getRGB() для получения int-представления цвета, затем сохраните значение int и воссоздайте цвет, используя это значение. Разбор не требуется.

3
ответ дан 3 December 2019 в 13:51
поделиться

Из документации 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());

Я не рекомендую делать это на самом деле.

4
ответ дан 3 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: