亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何或我可以為多個 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 關注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號