[英]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.