我试图以这样的方式编写此代码,即每次单击按钮都会更改面板的颜色。我希望它从红色>绿色>蓝色>灰色>红色> ...等循环。 这就是我的听众课程的样子
67 00
答案 0 :(得分:1)
请勿使用==
运算符进行比较。使用Color类的equals()
方法。
==
运算符检查两者是否在内存中引用相同的对象。
使用equals()
方法检查两者是否有意义相同。
确定另一个对象是否等于此Color。结果 当且仅当参数不为null并且是Color对象时才为true 与此对象具有相同的红色,绿色,蓝色和alpha值。
答案 1 :(得分:1)
你没有说出错是什么,但是从你的代码中看起来总是将背景设置为红色。移除setBackground(Color.RED);
/ if
块之后的else
行,以便停止覆盖if
设置的任何颜色,它可能会开始工作。如果没有,请尝试使用getBackground().equals(Color.RED)
来比较颜色,而不是使用==
。
答案 2 :(得分:1)
你的函数的最后一行,无条件:
@media
将背景颜色设置为红色 始终。 您需要摆脱该行。
发生的事情是,在您第一次调用该函数时,颜色被设置为红色(它可能会根据其初始值暂时变为另一种颜色)。然后,在 每次 后续调用中,它将在非常短的时间内设置为绿色,然后再设置为红色。
此外,您应该在Java中使用setBackground(Color.RED);
对象值相等,equals
应保留对象引用相等({ {1}} 可以工作,具体取决于颜色对象在封面下的管理方式,但不能保证。)
实施这两项更改将会看到以下内容:
==
答案 3 :(得分:0)
方法的最后一行(将颜色设置为红色)是无条件的,这意味着每次调用方法时它都会将颜色设置为红色。尝试删除此行。