Получение цвета из строкового ввода, getField

1

Вопрос: Я хотел бы, чтобы пользователь вводил цвет (красный, синий), и он должен быть преобразован для использования с цветом

Я смотрел на это

Получив цвет из ввода String, я понимаю, что было бы лучше использовать JColorChooser или что-то подобное, хотя у меня нет этого роскошного. Это принятый для этого ответ.

String text = "red";
Color color;
Field field = Class.forName("java.awt.Color").getField(text.toLowerCase()); // toLowerCase because the color fields are RED or red, not Red
color = (Color)field.get(null);

Из этого ответа я вижу, что это действительно просто конкатенация ".RED" на java.awt.Color,

Хотя я не могу заставить это работать. Их лучший способ сделать это?

Причина, по которой я делаю это, заключается в простой программе, она будет запрашивать у пользователя цвет ("красный, синий, желтый и т.д.")

Затем я хотел бы сохранить этот цвет в текстовом файле. Откройте текстовый файл и загрузите его, хотя у меня есть эта часть allready, но я не пересек бридж, чтобы получить цвет от пользователя. Извините, я все еще изучаю Java, поэтому извиняюсь за любые вопиющие ошибки.

Благодарю.

Теги:

1 ответ

1
Лучший ответ

Если мне нужно было сохранить мои цвета в текстовом файле, я бы использовал метод int getRGB(), перевел число в шестнадцатеричный и сохранил int как String. Затем разбор его обратно в int, а затем цвет будет тривиальным.

например,

public static void writeOutMethod1(File file, List<Color> colorList) throws FileNotFoundException {
  PrintWriter pw = new PrintWriter(file);
  for (Color color : colorList) {
     pw.printf("%08x ", color.getRGB());
  }
  pw.close();
}

Если бы мне пришлось использовать строки, которые по-человечески понятны, я бы создал свою собственную карту для связывания строк с цветом.

  • 0
    Таким образом, пользователь не может набрать «Red» и затем каким-то образом объединить «RED» с java.awt.Color? Затем создать цвет, используя это? Спасибо
  • 0
    @jackdh: код, который вы уже опубликовали, делает это за вас. В чем проблема с этим.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню