使用Java中的访问器方法的条件语句

时间:2013-06-22 20:05:52

标签: java

我的_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;
    }
}

2 个答案:

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