【问题标题】:How to list all colors in JavaFX如何在 JavaFX 中列出所有颜色
【发布时间】:2013-07-04 08:01:30
【问题描述】:

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

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

【问题讨论】:

    标签: javafx-2 javafx javafx-8


    【解决方案1】:

    在我看来,没有本地方法可以获取它。我只是检查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;
    }
    

    希望对你有帮助。

    【讨论】:

    • 谢谢,这很有帮助。顺便说一句,这是 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))
    猜你喜欢
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    相关资源
    最近更新 更多