为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

一个可能的解决方案是:

  1. 初始化“按钮按下”计数器。因此,在您的 actionPerformed 方法之外有一个变量,并在每次按下按钮时递增它。添加一些逻辑以在计数器值超过某个阈值时重置计数器值,即在您循环通过“最后”颜色后,返回到第一种颜色。

  2. 有一个 switch 语句,它将根据计数器的值设置背景(本质上,按下按钮的次数)。


查看完整回答
反对 回复 2022-06-23
?
www说

TA贡献1775条经验 获得超8个赞

我要做的是创建一个检查和更改背景的函数,然后将我的所有按钮传递给它。


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


查看完整回答
反对 回复 2022-06-23
?
潇湘沐

TA贡献1816条经验 获得超6个赞

创建一个实现 ActionListener 的私有内部类,并在其中包含一组颜色。覆盖 actionPerformed 并有一个内部计数,所以 e.setBackground(colorList.get(count % colorList.size())



查看完整回答
反对 回复 2022-06-23
  • 3 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号