2013-06-23 44 views
0

當我點擊PaintSwatch時,我希望他們自己突出顯示(setFrameThickness和setFrameColor)。但是,我想這樣做,所以一次只能突出顯示一個。我包含了它必須滿足的兩個條件,布爾部分並不工作,因爲我仍然能夠突出顯示多個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; 

     } 
    } 

} 

回答

0

您錯過了兩個PaintSwatches之間的交互。您的鼠標事件只會改變點擊的PaintSwatch的狀態。

但是,您需要調用其他PaintSwatches以相應地進行更改。您可以通過所有PaintSwatches的父對象中的函數直接(然後所有PaintSwatch需要相互註冊)或使用Observers等來實現。

0

當發生鼠標單擊時,只有被點擊的對象接收致電mouseClicked()。您需要以某種方式跟蹤當前選擇的PaintSwatch,並在選擇新的PaintSwatch時取消選擇它。