Установить цвет JLabel, используя строку

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

jLabel3.setForeground(Color.blue);

Вот что я пытался, но не получилось:

String a = "blue";
jLabel3.setForeground(Color.a);

или же:

String a = "blue";
jLabel3.setForeground(a);

Есть ли другой способ сделать это с помощью метода? Любая помощь будет отличной. Благодарю вас.

3 ответа

Решение

Вот один из способов:

Map<String, Color> colors = new HashMap<String, Color>();

// ...

colors.put("blue", Color.BLUE);
colors.put("red", Color.RED);
colors.put("green", Color.GREEN);
// other colors

Тогда используйте это как:

String a = "blue";
jLabel3.setForeground(colors.get(a.toLowerCase()));

РЕДАКТИРОВАТЬ: рассмотреть вариант выбора цвета. См. Как использовать средства выбора цвета.

Попробуйте отражение:

Color color;
try {
    Field field = Class.forName("java.awt.Color").getField("yellow");
    color = (Color)field.get(null);
} catch (final Exception e) {
    e.printStackTrace();
}

Помимо этого вы можете создать карту цветов и их названия.

Не уверен, что есть лучший способ, но вы могли бы сделать что-то вроде:

If("blue".equals(a)){
    jLabel3.setForeground(Color.blue);
}
Другие вопросы по тегам