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)
这样毫无意义的操作)。为什么不直接用九个颜色
值填充组合框呢?它们组合框
需要显示为浅绿色
、蓝色
、绿色
…等等。如果颜色只是文本值,我不确定如何将其拉入形状。您可能可以执行类似于颜色模式列表的操作。