Прокрутите класс перечисления и назначьте цвет для каждого [JAVA]

В настоящее время работаю над своим вторым семестром, работая над проектом, в котором мы впервые использовали класс 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();
}

Любая помощь приветствуется. Заранее спасибо :)

Нет необходимости перебирать и присваивать значения таким образом. Вы можете создать перечисление со значениями по умолчанию, см. соответствующий вопрос. stackoverflow.com/questions/1067352/…

adickinson 21.03.2019 13:16
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как предложил @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, поскольку он не является статическим, но не позволяет мне сделать его статическим.

rasm937k 21.03.2019 13:55

Как вы вызываете getColor ? Вы должны вызывать его для экземпляра перечисления, такого как ''WayType.BUILDING.getColor()'', а не ''WayType.getColor()''

Conffusion 21.03.2019 14:04

Другие вопросы по теме