为什么代码没有相应的操作?

时间:2015-05-26 04:35:06

标签: java user-interface

我试图以这样的方式编写此代码,即每次单击按钮都会更改面板的颜色。我希望它从红色>绿色>蓝色>灰色>红色> ...等循环。 这就是我的听众课程的样子

67 00

4 个答案:

答案 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)

方法的最后一行(将颜色设置为红色)是无条件的,这意味着每次调用方法时它都会将颜色设置为红色。尝试删除此行。