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