2013-06-22 54 views
0

我的_holder.getColor()應該默認返回顏色RED,並且這些條件語句不起作用。我認爲我的語法錯了。在Java中使用訪問器方法的條件語句

基本上我希望能突出一個paintswatch,當我點擊它時,如果色板顏色與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; 
    } 
} 
+3

您可能需要使用'equals()方法的''而不是'==。你正在比較「Color」類型的對象。.. – Maroun

+0

嘿,謝謝!這是正確的嗎?如果(_holder.getColor.equals(super.getColor())){...} – dio

+0

試一試;) – Maroun

回答

2

除了使用等於你也應該,如果使用別的,而不是兩個不同的IFS:

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

if (_holder.getColor() == super.getColor()) { 
    ... 
} 

注意,第二如果條件將始終評估爲真 - 如果持有者的顏色不等於超級的顏色,則會在第一個條件中設置。

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

此外,請確保持有者和超級作爲顏色不返回null或明確地檢查它。

+0

真棒感謝人 – dio

0

PaintSwatch類取代

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

if (!_holder.getColor().equals(super.getColor())) 
+0

非常感謝這等於()的事情是真棒 – dio

+0

嘿,如果我想要一個色板一次選擇,我可以創建一個公共詮釋_i = 0;並有一個2條件if語句? ex)... if(!_holder.getColor()。equals(super.getColor())&& _i == 0){。 ...最後,我會有:_i = 1} – dio

+0

無法得到你的問題..你可以詳細闡述它。 –