Как или можно обобщить оператор If для нескольких кнопок J (изменение цвета)? - PullRequest
0 голосов
/ 17 февраля 2019

Поэтому я пытаюсь, чтобы несколько кнопок меняли цвет при нажатии.Каждое отдельное нажатие должно циклически проходить через заданный цикл цветов (белый, красный, зеленый, желтый, синий, черный).Я мог бы просто сделать длинное заявление if-else, но я уверен, что есть лучший способ, но я просто не могу придумать его.

Я уже пробовал "getSource (). GetBackground () "во втором операторе if, но он не может получить ту же переменную, что и первый оператор if.

 public void actionPerformed(ActionEvent e){   
    if(e.getSource() == btn1){  
      if(getSource().getBackground() == Color.white)  
        setBackground(Color.red);  
        else  
        setBackground(Color.white);  
    }  

Как уже говорилось ранее, я пытаюсь минимизировать усилие здесь и сделать его такженемного более организованно.

Ответы [ 3 ]

0 голосов
/ 17 февраля 2019

Я бы сделал функцию, которая проверяет и изменяет фон, а затем передает ему все мои кнопки.

public void checkAndChangeColor(Object source, Object btn, int bgToCheck, int bgToChange1, int bgToChange2){
    if (source == btn) {
        if (source.getBackground() == bgToCheck)
            setBackground(bgToChange1);
        else
            setBackground(bgToChange2);
    }
}

, а затем я вызываю этот метод для каждой кнопки.

checkAndChangeColor(e.getSource(), btn, Color.white, Color.red, Color.white);
0 голосов
/ 17 февраля 2019

Создайте закрытый внутренний класс, который реализует ActionListener и содержит коллекцию цветов внутри него.Переопределяет actionPerformed и имеет внутренний счет, поэтому e.setBackground (colorList.get (count% colorList.size ())

0 голосов
/ 17 февраля 2019

Возможное решение будет выглядеть примерно так:

  1. Инициализировать счетчик «нажатием кнопки».Таким образом, переменная находится вне вашего метода actionPerformed и увеличивается на единицу при каждом нажатии кнопки.Добавьте некоторую логику для сброса значения счетчика, как только оно превысит определенный порог, т. Е. После того, как вы перебрали свой «последний» цвет, вернитесь к первому цвету.
  2. Имеет оператор switch, который устанавливает фон в соответствии со значением счетчика (по сути, сколько раз была нажата кнопка).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...