изменение цвета панели - PullRequest
0 голосов
/ 29 апреля 2010

У меня есть строка, в которой хранится название цвета. С помощью этой переменной мне нужно изменить фон панели. как это можно сделать ???

Ответы [ 2 ]

2 голосов
/ 29 апреля 2010

Создать карту, которая содержит строковое имя цвета и фактический объект Color.

Edit:

Только что заметил, что два других ответа предлагают использовать метод getColor (...). Это не просто волшебно работает, и вам нужно определить цвет в свойствах системы. Я никогда не использовал системные свойства, но я считаю, что вы должны установить их при запуске JVM.

1 голос
/ 30 апреля 2010

Если цвета будут только теми, которые поддерживает 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;
}

Несколько заметок:

  1. Это использует отражение, поэтому оно будет будь медленнее (хотя ты мог бы, технически использовать это, чтобы сделать цвет карта при запуске приложения и просто сослаться на это).
  2. Было бы намного разумнее цветная карта, упомянутая другими люди выше.

  3. Лучше всего будет если разные системы отправили вас фактические значения - скажем, значения RGB в int или 0.0-1.0 двойной формат. затем вы могли бы последовательно дать им соответствующий ответ.

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...