Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中使用访问器方法的条件语句_Java - Fatal编程技术网

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

Java中使用访问器方法的条件语句,java,Java,默认情况下,my\u holder.getColor()应该返回红色,这些条件语句不起作用。我想我的语法错了 基本上,我希望在单击时能够高亮显示一个油漆样本,如果样本颜色与ColorHolder中的颜色相同,我希望它取消选择样本 import wheels.users.*; import java.awt.Color; import java.awt.event.MouseEvent; public class PaintSwatch extends Ellipse { private

默认情况下,my
\u holder.getColor()
应该返回红色,这些条件语句不起作用。我想我的语法错了

基本上,我希望在单击时能够高亮显示一个油漆样本,如果样本颜色与
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;
    }
}

除了使用equals,还应使用if-else而不是两个不同的if:

if (_holder.getColor() != super.getColor()) {
   ...
   _holder.setColor(super.getColor());
}

if (_holder.getColor() == super.getColor()) { 
   ...
}
请注意,第二个if条件的计算结果始终为真-如果持有者的颜色不等于super的颜色,则将在第一个if条件中设置

if (_holder.getColor().equals(super.getColor())) {
   ... do sth
} else {
   ... do sth else
}

另外,请确保支架和super不会将null作为颜色返回或明确检查。

漆面样本中

if (_holder.getColor() != super.getColor())


您可能希望使用
equals()
而不是
=
。您正在比较
颜色类型的对象。嘿,谢谢!这是正确的吗?如果(_holder.getColor.equals(super.getColor()){…}嘿,如果我想一次选择一个样例,我可以创建一个公共int _I=0;还有一个2条件if语句?例如。。。如果(!\u holder.getColor().equals(super.getColor())&&&\u i==0){…最后我会有:{u i=1}无法理解你的问题..你能详细说明一下吗。?
if (!_holder.getColor().equals(super.getColor()))