Color.toString
печатает каналы (включая альфа), и вы ничего не можете с этим поделать.
Вы можете использовать Map<String, Color>
для отображения строк в цвет:
Map<String, Color> colors = new LinkedHashMap<>();
colors.put("RED", Color.RED);
...
colors.put("ORANGE", Color.ORANGE);
ObservableList<String> colorList = FXCollections.observableArrayList(colors.keySet());
ComboBox<String> dColors = new ComboBox<>(colorList);
dColors.setPromptText("Color of Box");
dColors.setPrefSize(150, 30);
dColors.setOnAction(event -> {
diffuseColor = colors.get(((ComboBox<String>) event.getSource()).getValue());
mymaterial.setDiffuseColor(diffuseColor);
});
Если отражение доступно и вы хотите перечислить всех цветов, доступных через поля в классе Color
, вы также можете использовать его для Color
s:
private static final int PUBLIC_STATIC = Modifier.PUBLIC | Modifier.STATIC;
...
Map<String, Color> colors = new LinkedHashMap<>();
for (Field field : Color.class.getDeclaredFields()) {
if (field.getType() == Color.class && (field.getModifiers() & PUBLIC_STATIC) == PUBLIC_STATIC ) {
colors.put(field.getName(), (Color) field.get(null));
}
}