Если цвета будут только теми, которые поддерживает Java, вы можете сделать что-то вроде следующего:
private Color getColorByName(String colorName) {
Field[] colorFields = Color.class.getDeclaredFields();
for (Field field : colorFields) {
if (field.getName().equals(colorName.toUpper())) {
//check that this is in fact a static field,
//to make sure it is one of the colors you are looking for
int modifiers = field.getModifiers();
if ((Modifiers.STATIC & modifiers != 0)
&& (Modifiers.PUBLIC & modifiers != 0)) {
try{
return (Color)field.getValue(null);
} catch (FieldNotFoundException ex) {
//Maybe put some additional handling in here if you need it
}
}
}
}
//or return a default color
return null;
}
Несколько заметок:
- Это использует отражение, поэтому оно будет
будь медленнее (хотя ты мог бы,
технически использовать это, чтобы сделать цвет
карта при запуске приложения
и просто сослаться на это).
Было бы намного разумнее
цветная карта, упомянутая другими
люди выше.
Лучше всего будет
если разные системы отправили вас
фактические значения - скажем, значения RGB в
int или 0.0-1.0 двойной формат. затем
вы могли бы последовательно дать им
соответствующий ответ.
Моя рекомендация, если вы должны использовать имя цвета, заключается в том, что они дают вам набор имен, которые вы должны поддерживать, и у вас есть условие ошибки - либо цвет по умолчанию, либо ноль, либо выдается исключение.
Надеюсь, это поможет.