JavaFX颜色作为枚举

JavaFX颜色作为枚举,javafx,enums,colors,Javafx,Enums,Colors,我有一个组合框,它是用公共枚举名称颜色初始化的。我还有一个形状,可以从组合框中拉出颜色。我似乎无法使我的enum表示Color类。当我使用foo.nameColor.BLUE作为形状的参数时,它不会将值识别为颜色 public static enum nameColor { AQUA(Color.AQUA), BLACK(Color.BLACK), BLUE(Color.BLUE), CORAL(Color.CORAL), GREEN(Color.GREE

我有一个
组合框
,它是用
公共枚举名称颜色
初始化的。我还有一个形状,可以从组合框中拉出
颜色。我似乎无法使我的
enum
表示
Color
类。当我使用
foo.nameColor.BLUE
作为形状的参数时,它不会将
识别为
颜色

public static enum nameColor {
    AQUA(Color.AQUA),
    BLACK(Color.BLACK),
    BLUE(Color.BLUE),
    CORAL(Color.CORAL),
    GREEN(Color.GREEN),
    GREY(Color.GREY),
    RED(Color.RED),
    WHITE(Color.WHITE),
    YELLOW(Color.YELLOW);

    private Color nameColor;

    nameColor(Color nameColor){this.nameColor = nameColor;}
    public void setNameColor(Color nameColor){this.nameColor = nameColor;}
    public Color getNameColor(){return nameColor;}
}

在java中不能执行类似的操作<代码>颜色
是最终的,因此您不能创建子类型,只有子类型才是也可以用来代替颜色的类型。当然,您可以向枚举中添加一个getter,但是您需要重载任何采用
Color
类型的方法,并且您不能像这样修改JavaFXAPI中的类而不对它们进行子类化……您当然可以执行
myShape.setFill(nameColor.BLUE.getNameColor())。但这一切似乎都毫无意义;您是
enum
的行为与enum不同(例如,没有任何东西可以阻止您执行像
nameColor.GREEN.setNameColor(Color.RED)
这样毫无意义的操作)。为什么不直接用九个
颜色
值填充组合框呢?它们
组合框
需要显示为
浅绿色
蓝色
绿色
…等等。如果颜色只是文本值,我不确定如何将其拉入形状。您可能可以执行类似于
颜色模式列表的操作。