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

所以我试图让多个按钮在按下时做同样的颜色变化。每个单独的印刷机应循环通过预定的颜色循环(白色,红色,绿色,黄色,蓝色,黑色)。我可以做一个很长的 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);  

    }  

如前所述,我试图将这里的工作量降到最低,并使其更有条理。


千巷猫影
浏览 124回答 3
3回答

料青山看我应如是

一个可能的解决方案是:初始化“按钮按下”计数器。因此,在您的 actionPerformed 方法之外有一个变量,并在每次按下按钮时递增它。添加一些逻辑以在计数器值超过某个阈值时重置计数器值,即在您循环通过“最后”颜色后,返回到第一种颜色。有一个 switch 语句,它将根据计数器的值设置背景(本质上,按下按钮的次数)。

www说

我要做的是创建一个检查和更改背景的函数,然后将我的所有按钮传递给它。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);

潇湘沐

创建一个实现 ActionListener 的私有内部类,并在其中包含一组颜色。覆盖 actionPerformed 并有一个内部计数,所以 e.setBackground(colorList.get(count % colorList.size())
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java