早上好, 我有个问题。 我需要操作一个在线程中修改的变量。
new Timer(5000, new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
color=colorRandom();
}
}).start();
其中: color 是在 white 上设置的全局变量, colorRandom()是一种生成并返回随机颜色(黑色,白色或红色)的方法。
最后,我尝试检查椭圆的颜色(另一个对象)是否与矩形相同。 所以我这样做了:
public boolean checkColor()
{
return ellipseColor.equals(rect.color);
}
这不起作用。 它没有给我正确的价值。 即使两个对象具有相同的颜色,也表示颜色不同。 在将椭圆和矩形的颜色都设置为 white
之后我也尝试了这个public boolean checkColor()
{
return ellipseColor.equals(rect.color);
}
这会返回 true ! 所以方法checkColor似乎没问题。 问题, 在第一种情况下, 是变量没有被正确操纵。 有什么建议? 我也尝试使用 locks ,因为朋友告诉我尝试它但它仍然无法正常工作。
答案 0 :(得分:0)
问题在于您用来比较颜色的方法。 有关比较颜色的正确方法,请参阅此处的答案The unix timestamp isn't affected by a timezone setting. Setting the timezone only affects the interpretation of the timestamp value.。
使用ColorA == ColorB只会在某些时候使用。 具体来说,如果两个引用都引用Color.WHITE对象。 如果一个是Color.WHITE而另一个是新的Color(255,255,255),这将不起作用,因为它们是不同的对象。