В настоящее время работаю над своим вторым семестром, работая над проектом, в котором мы впервые использовали класс Enum. В настоящее время он содержит WayTypes, которые мы используем для раскрашивания в нашем классе MapCanvas. Я хотел бы выполнить итерацию по этому классу и назначить разные цвета для разных Enum во время этой итерации, но я не могу понять, как это сделать.
В настоящее время мой класс Enum выглядит так:
public enum WayType {
UNKNOWN, BUILDING, WATER, COASTLINE, LANDUSE, LEISURE, FARMLAND,
BICYCLE, FOOTWAY, PRIMARYROAD, MOTORWAY, TERTIARYROAD, SECONDARYROAD;
}
Как мы применяем цвет в нашем MapCanvas в данный момент:
gc.setFill(Color.LIGHTGREEN);
for (Drawable way : model.getWaysOfType(WayType.LANDUSE))
way.fill(gc);
for (Drawable way : model.getWaysOfType(WayType.LANDUSE))
way.stroke(gc);
Методы обводки и заливки выглядят следующим образом:
public void stroke(GraphicsContext gc) {
gc.beginPath();
trace(gc);
gc.stroke();
}
А также
public void fill(GraphicsContext gc) {
gc.beginPath();
trace(gc);
gc.fill();
}
Любая помощь приветствуется. Заранее спасибо :)




Как предложил @adickinson:
import java.awt.Color;
public enum WayType {
UNKNOWN(Color.Black), BUILDING(Color.Gray), WATER(Color.Blue),
COASTLINE(Color.DarkBlue), LANDUSE(Color.Green) /*... to complete*/;
private Color color;
private WayType(Color color) {
this.color=color;
}
public Color getColor() {
return color;
}
}
Это почему-то не позволяет мне получить доступ к методу getColor из моего класса MapCanvas, поскольку он не является статическим, но не позволяет мне сделать его статическим.
Как вы вызываете getColor ? Вы должны вызывать его для экземпляра перечисления, такого как ''WayType.BUILDING.getColor()'', а не ''WayType.getColor()''
Нет необходимости перебирать и присваивать значения таким образом. Вы можете создать перечисление со значениями по умолчанию, см. соответствующий вопрос. stackoverflow.com/questions/1067352/…