2014-03-25 30 views
0

我有這段代碼更改對象參數

 for (int j = 0; j < 2; j++) { 

     // Shuffle images array 
     Collections.shuffle(Arrays.asList(cards)); 

     for (int i = 0; i < cards.length; i++) { 

      // Create new instance of card 
      final Card card = new Card(cards[i].getCardID(), cards[i].getCardImage()); 

      ImageIcon icon = card.getDefIcon(); 
      card.setIcon(icon); 
      this.add(card); 


      card.addMouseListener(new MouseAdapter() 
      { 
       card.clicked = true; 
       public void mouseReleased(MouseEvent e) 
       { 


       } 
      }); 

     } 

    } 

但「card.clicked =真正的」有標記「點擊」錯誤 語法錯誤行,VariableDeclaratorld預計此令牌

的卡類這個樣子的

public class Card extends JLabel { 
int cardID; 
public boolean clicked = false; 
BufferedImage cardImage; 
ImageIcon defIcon = new ImageIcon("E:/Java Projects/UUR - Semestralka/resources/card.png"); 


Card (int cardID, BufferedImage cardImage) { 
    this.cardID = cardID; 
    this.cardImage = cardImage; 
} 

public int getCardID() { 
    return cardID; 
} 

public BufferedImage getCardImage() { 
    return cardImage; 
} 

public ImageIcon getDefIcon() { 
    return defIcon; 
} 
} 

沒有人知道我在做什麼錯?

+0

你不能有這樣的「飛行」的聲明 – 2014-03-25 14:29:03

+0

張貼的代碼傾向於猜測,猜測,更快地幫助張貼SSCCE/MCVE/MCTRE,短的,可運行的,可編譯 – mKorbel

+0

另外,請創建一個setClicked(boolean isClicked)方法更改點擊屬性並不直接訪問它。 – Dominic

回答

2

你需要把

card.clicked = true; 

裏面的方法如下

public void mouseReleased(MouseEvent e) 
{ 
    card.clicked = true; 
} 
+0

是的,工作非常感謝:) – user13746

+0

不客氣。 –

0
card.addMouseListener(new MouseAdapter() { 
    //card.clicked = true; <-- cant be here 
    public void mouseReleased(MouseEvent e) { 
     card.clicked = true; //should go here 
    } 
}); 
1

card.clicked = true必須進入方法體(內void mouseReleased(...)

1

你應該把它移到您匿名的mouseReleased方法MouseAdapter