Как сделать заявление о переключении для java.awt.Color - PullRequest
0 голосов
/ 03 апреля 2019

Итак, я делаю небольшую Java-игру в качестве школьного проекта и хочу вернуть изображение, которое должно быть в HashMap. В методе, который я вызываю, я хочу дать java.awt.Color в качестве параметра и сделать для него оператор switch.

(Примечание. Все цвета, входящие в функцию, являются цветами по умолчанию, такими как «Color.red» или «Color.green»!)

Я уже пытался сделать это со значением RGB цвета, но это не работает.

Вот НЕ РАБОТАЮЩИЙ код:

   private static HashMap<Color, Image> blocks_hash;

    public static void setBlock(Color color, Image image) { blocks_hash.put(color, image); }

    public static Image getBlock(Color color) {
        if(blocks_hash.containsKey(color))
            return blocks_hash.get(color);
        else
            switch (color.getRGB()) {
                case Color.red.getRGB():
                    return getBlocks().getSubimage(0, 0, 60, 60);
            }
        return null;
    }

1 Ответ

0 голосов
/ 03 апреля 2019

Вы не можете сделать регистр переключения, потому что он уже постоянный, см. здесь

Вы можете изменить цвета для перечисления полей

class newClass {
 enum Colors {RED,GREEN,BLACK}

 public static Image getBlock(Colors colors) {
    switch (colors){
        case BLACK:
            System.out.println("BLACK");;
            break;
        case GREEN:
            System.out.println("GREEN");;
            break;
        case RED:
            System.out.println("RED");
            break;
            default:
                System.out.println("non color");
    }
}

P.S Без распределительного шкафа

class newClass {
 enum Colors {RED,GREEN,BLACK}

 public static Image getBlock(Colors colors) {

    if(colors==BLACK){
      System.out.println("BLACK");
}else if(colors==GREEN){
      System.out.println("GREEN");
}else if(colors==RED){
      System.out.println("RED");
}else
      System.out.println("non color");
    }
}

И применить к вашему коду

public static Image getBlock(Color color) {
    if (blocks_hash.containsKey(color)) {
        if (color == Color.BLACK) {
            System.out.println("Black");
        } else if (color == Color.CYAN) {
            System.out.println("CYAN");
        }
    } else {
        System.out.println("non color");
    }
    return null;
}
...