我的_holder.getColor()
默认返回颜色RED,这些条件语句不起作用。我想我的语法错了。
基本上我希望能够在点击它时突出显示一个paintwatch,如果样本颜色与ColorHolder
中的颜色相同,我希望它取消选择样本。
import wheels.users.*;
import java.awt.Color;
import java.awt.event.MouseEvent;
public class PaintSwatch extends Ellipse
{
private ColorHolder _holder;
public int _i;
public PaintSwatch(Color c,ColorHolder holder){
super(c);
_holder = holder;
_i = 1;
}
public void mouseClicked(MouseEvent e){
if (_holder.getColor() != super.getColor()){
super.setFrameColor(Color.BLACK);
super.setFrameThickness(3);
_holder.setColor(super.getColor());
}
if (_holder.getColor() == super.getColor()){
super.setFrameThickness(10);
super.setFrameColor(Color.WHITE);
_holder.setColor(Color.RED);
}
}
}
这是我的ColorHolder类:
import java.awt.Color;
public class ColorHolder implements Colorable
{
private Color _currentColor;
public ColorHolder()
{
_currentColor = Color.RED;
}
public Color getColor(){
return _currentColor;
}
public void setColor(Color c){
_currentColor = c;
}
}
答案 0 :(得分:2)
除了使用equals之外,你还应该使用if else而不是两个不同的ifs:
if (_holder.getColor() != super.getColor()) {
...
_holder.setColor(super.getColor());
}
if (_holder.getColor() == super.getColor()) {
...
}
请注意,第二个if条件将始终评估为true - 如果持有者的颜色不等于super的颜色,则将在第一个if条件中设置。
if (_holder.getColor().equals(super.getColor())) {
... do sth
} else {
... do sth else
}
还要确保holder和super不会返回null作为颜色或明确检查它。
答案 1 :(得分:0)
在PaintSwatch
类内替换
if (_holder.getColor() != super.getColor())
到
if (!_holder.getColor().equals(super.getColor()))