2014-03-25 31 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