2

クラス にあるすべての色をリストしたいと思いColor.<color>ます。

リストされているすべての色はどこにありますか?

4

1 に答える 1

7

私の意見では、それを取得するネイティブな方法はありません。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;
}

それが役に立てば幸い。

于 2013-07-04T08:19:49.360 に答える