Как перечислить все цвета в JavaFX

Я хотел бы перечислить все цвета, которые находятся в классе Color.<color>.

Где я могу найти все перечисленные цвета?


person user1285928    schedule 04.07.2013    source источник


Ответы (1)


На мой взгляд, нет собственного способа получить это. Я просто проверяю Color API и, похоже, там это не функция, которая дает вам цвета по умолчанию. Но вы можете получить их, получая все поля через отражение. Здесь я покажу вам образец:

private static List<Color> allColors() throws ClassNotFoundException, IllegalAccessException {
    List<Color> colors = new ArrayList<>();
    Class clazz = Class.forName("javafx.scene.paint.Color");
    if (clazz != null) {
        Field[] field = clazz.getFields();
        for (int i = 0; i < field.length; i++) {
            Field f = field[i];                
            Object obj = f.get(null);
            if(obj instanceof Color){
                colors.add((Color) obj);
            }

        }
    }
    return colors;
}

Также, если вам нужно название цвета, вы можете получить его из информации о поле в момент извлечения. И, например, вы можете вернуть карту с информацией об имени и цвете, как показано выше:

private static Map<String, Color> allColorsWithName() throws ClassNotFoundException, IllegalAccessException {
    Map<String, Color> map = new HashMap<>();
    Class clazz = Class.forName("javafx.scene.paint.Color");
    if (clazz != null) {
        Field[] field = clazz.getFields();
        for (int i = 0; i < field.length; i++) {
            Field f = field[i];                
            Object obj = f.get(null);
            if(obj instanceof Color){
                map.put(f.getName(), (Color) obj);
            }

        }
    }
    return map;
}

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

person Antonio J.    schedule 04.07.2013
comment
Спасибо, это очень помогает. Кстати, это эквивалентно в Clojure: (def color-fields (.getFields (class Color/BLUE))) (def color-vals (map #(. % get nil) color-fields)) (def color-names ( map #(. % getName ) color-fields)) (def color-map (zipmap color-names color-vals)) - person Sonicsmooth; 20.07.2015