如何或可以概括多个JButton的If语句(颜色变化)?

时间:2019-02-17 18:48:25

标签: java if-statement optimization

因此,我试图使多个按钮在按下时具有相同的颜色变化。每个单独的印刷机应循环经过预定的颜色循环(白色,红色,绿色,黄色,蓝色,黑色)。我可以做一个长的if-else语句,但是因为我很确定有更好的方法,我只是想不出一个办法。

我已经在第二个if语句中尝试过“ getSource()。getBackground()”,但是它无法获得与第一个if语句相同的变量。

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

如前所述,我正在尝试将此处的工作减至最少,并使它更有条理。

3 个答案:

答案 0 :(得分:0)

可能的解决方案如下:

  1. 初始化“按钮式”计数器。因此,请在actionPerformed方法外部设置一个变量,并在每次按下按钮时将其递增。添加一些逻辑以在计数器值超过某个阈值时重置计数器值,即在您循环显示“最后”颜色后,返回到第一种颜色。
  2. 具有switch语句,该语句将根据计数器的值(实质上是按钮被按下的次数)设置背景。

答案 1 :(得分:0)

我要做的是创建一个功能,该功能可以检查并更改背景,然后将所有按钮传递给它。

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);

答案 2 :(得分:0)

制作一个私有内部类,该类实现ActionListener并在其中包含颜色的集合。覆盖actionPerformed并且具有内部计数,因此e.setBackground(colorList.get(count%colorList.size())