【发布时间】:2013-03-25 13:59:34
【问题描述】:
rollDice.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//generate roll
int roll = dice.getRoll();
addGameFeedMessage(players[1].getName() + " rolled " + roll);
//store the player's position before the roll
int currentPlayerPos = players[1].getPosition();
//update player's position
players[1].movePlayer(roll);
//move the player icon to the player's position
tiles[players[1].getPosition()].addIconCurrentPlayersPanel(players[1].getPlayerIcon());
//revalidate components
//tiles[currentPlayerPos].getCurrentPlayersPanel().revalidate();
//tiles[players[1].getPosition()].getCurrentPlayersPanel().revalidate();
//this loop was put in to see if doing revalidate() on all panels would make a difference but the problem is still there
for(int i = 0; i < tiles.length; i++)
{
tiles[i].getCurrentPlayersPanel().revalidate();
}
}
});
谁能解释为什么掷骰子的 actionListener 中的 for 循环似乎不起作用,而它上面的 for 循环却完全一样起作用?没有实际错误,因为它什么都不做,但它确实进入了 actionListener 并在我们将打印语句等放入其中时执行。
猜测 actionListeners 有点奇怪,但我不确定是什么。
任何帮助将不胜感激,谢谢。
【问题讨论】:
-
你有没有在for循环之前打印
actionPerformed中的getNumOfPlayers()? -
@skirsch 修复缩进很好,但改变编码风格被认为是过于激进的改变。批准您的修改的人应该知道这一点...
-
@Lundin 好的,我再试一次;)
-
@VishalK 我打印了 getNumOfPlayers 它总是一样的,这与它无关。由于某种原因,似乎只是没有在 for 循环中执行任何操作。
-
您是否将
System.out.print放入for 循环中?那是打印什么东西吗?