条件语句和布尔值

时间:2013-06-23 14:50:09

标签: java

当我点击PaintSwatch时,我希望它们突出显示自己(setFrameThickness和setFrameColor)。但是,我想这样做,所以一次只能突出显示一个。我包含了必须满足的2个条件,并且布尔部分不能正常工作,因为我仍然能够突出显示多个PaintSwatches。

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;

        }
    }

}

2 个答案:

答案 0 :(得分:0)

您缺少两个PaintSwatches之间的交互。您的鼠标事件仅会更改单击的PaintSwatch的状态。

但是,您需要调用其他PaintSwatches进行相应更改。您可以通过所有PaintSwatches的父对象中的函数直接执行此操作(然后所有PaintSwatches需要相互注册)或使用Observers等。

答案 1 :(得分:0)

发生鼠标单击时,只有被点击的对象才会收到mouseClicked()电话。您需要以某种方式跟踪当前选定的PaintSwatch,并在选择新的PaintSwatch时取消选择。