如何在JavaFX中列出所有颜色

时间:2013-07-04 08:01:31

标签: javafx-2 javafx javafx-8

我想列出班级Color.<color>中的所有颜色。

哪里可以找到列出的所有颜色?

1 个答案:

答案 0 :(得分:4)

在我看来,没有本土方式来获得它。我只是检查the 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;
}

希望它有所帮助。