簡體   English   中英

僅使用 1 個 jbutton 單擊時如何來回更改背景顏色,例如紅色和綠色

[英]how to change background color back and forth eg red and green when clicked using only 1 jbutton

所以我想要做的是創建一個按鈕,當點擊時,將背景顏色變為綠色。 一旦再次點擊它,它就會變成紅色。 並基本重復。 所以我正在尋找一些幫助來告訴我如何做到這一點。

這是我到目前為止所做的

class colorText implements ActionListener{
    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equals("Go")) {
            panel.setBackground(Color.GREEN);
        }
    }
}       

我嘗試通過這樣做來做到這一點,但出現錯誤並想知道如何解決它或一種新的方法

            if (e.getActionCommand() == Color.GREEN) {
            panel.setBackground(Color.RED);
        }

您嘗試的解決方案不起作用,因為(正如我們從第一個示例中看到的那樣), e.getActionCommand()返回一個字符串 - 當他們單擊您的按鈕時可能總是返回"Go"

您需要的是某種確定狀態的方法; 告訴“我現在應該把背景變成紅色”和“我現在應該把背景變成綠色”之間的區別。 有兩種方法可以做到這一點:

1) 檢查當前背景顏色

如果 API 允許您查詢背景顏色並與常量進行比較,您可以像這樣檢查它:

public void actionPerformed(ActionEvent e) {
    if (e.getActionCommand().equals("Go")) {
        if (panel.getBackground() == Color.RED) {
            panel.setBackground(Color.GREEN);
        } else { // could check for GREEN background here
            panel.setBackground(Color.RED)
        }
    }
}

這種方法可能的缺點:

  • 您可能無法(可靠地)讀回您設置的顏色。 要么它沒有在panel的 API 中公開,要么你得到的值由於某種原因不等於Color常量(例如,讀取值有一個 alpha 通道而常量沒有)
  • 這僅在此方法是修改背景的唯一方式時才有效。 如果任何其他代碼要修改背景,您將無法准確記錄上一次按下按鈕的操作。 這可能是一個大問題,因為這意味着此代碼不能很好地與其他功能一起使用。

2)存儲一個標志並每次翻轉它

這種方法涉及存儲一個顯式字段,讓您知道下一步要設置什么背景。 這可能只是一個布爾值,如下所示:

private boolean greenIsNext = true
   
public void actionPerformed(ActionEvent e) {
    if (e.getActionCommand().equals("Go")) {
        Color nextColour = greenIsNext ? Color.GREEN : Color.RED
        panel.setBackground(nextColour);
        // Flip the flag
        greenIsNext = !greenIsNext
    }
}

這可能是處理這種行為的更簡潔的方法,因為無論頁面上發生了什么,按下按鈕都會在設置背景綠色和紅色之間交替。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM