Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.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,当我单击一个画样时,我希望它们高亮显示自己(setFrameThickness和setFrameColor)。但是,我希望一次只能突出显示一个。我包括了它必须满足的两个条件,布尔部分并没有像我想象的那样工作,因为我仍然能够高亮显示多个画样 import wheels.users.*; import java.awt.Color; import java.awt.event.MouseEvent; public class PaintSwatch extends Ellipse { privat

当我单击一个画样时,我希望它们高亮显示自己(setFrameThickness和setFrameColor)。但是,我希望一次只能突出显示一个。我包括了它必须满足的两个条件,布尔部分并没有像我想象的那样工作,因为我仍然能够高亮显示多个画样

import wheels.users.*;
import java.awt.Color;
import java.awt.event.MouseEvent;

public class PaintSwatch extends Ellipse
{
private ColorHolder _holder; //Swatches setColor of this peer object
private boolean _clicked;

public PaintSwatch(Color c,ColorHolder holder){
    super(c);

    _holder = holder;

    _clicked = false;

}

public void mouseClicked(MouseEvent e){
        if (!_holder.getColor().equals(super.getColor()) && _clicked == false)
        {
         super.setFrameColor(Color.BLACK);
         super.setFrameThickness(3);
         _holder.setColor(super.getColor());
         _clicked=true;

        }

        else if(_holder.getColor().equals(super.getColor()) && _clicked == true)
        {
         super.setFrameThickness(0);
         super.setFrameColor(Color.WHITE);
         _holder.setColor(Color.RED);
         _clicked=false;

        }
    }

}

您缺少两个漆面样例之间的交互。您的鼠标事件只会更改单击的画样的状态


但是,需要调用其他绘制样例以进行相应更改。您可以通过所有PaintSwatches的父对象中的函数直接(然后所有PaintSwatches都需要相互注册)或使用观察者等来完成此操作。

当鼠标单击时,只有被单击的对象接收
mouseClicked()
调用。您需要以某种方式跟踪当前选择的
PaintSwatch
,并在选择新的
PaintSwatch
时取消选择它