我正在尝试创建一个国际象棋游戏,一切都很好,该游戏的运行也非常符合我的要求,但是现在我试图将棋子变成板后,将其变成皇后,我从我的物品清单中删除该棋子,然后在完全相同的位置添加一个新的女王。我这样做的方式与我执行其他所有操作的方式完全相同,因此我不希望在那里出现问题,但是新皇后区的映像仅在调试模式下出现,因此我知道这应该可行。
我已经尝试了一些方法,例如让程序等待,然后再将新标签放置在图块上,但这是行不通的。 顺便说一句,设置我的板的方式是一个JFrame,它的JPanel网格布局是瓷砖。然后,我添加一个JLabel,该JLabel包含一个在图像的构造函数中创建的imageIcon。
public void changePawnToQueen(Board board, Piece currentPiece) {
int x = currentPiece.x;
int y = currentPiece.y;
int tilePosition = x + y * 8;
board.tileList.get(tilePosition).removeAll();
removeAllSelection(board);
pieceList.remove(currentPiece);
pieceList.add(pieceList.size(), new Queen(color, x, y, "/Chess Pieces/queenW.png"));
board.tileList.get(tilePosition).piece = pieceList.get(pieceList.size() - 1);
board.tileList.get(tilePosition).add(pieceList.get(pieceList.size() - 1).label);
}
这基本上应该删除当前在图块上的pawn,然后应该在同一位置显示新的皇后,但是由于某种原因,它不显示皇后。如果我继续玩,女王就在那儿,因为我可以用它杀死其他作品,但她没有形象。如果我在调试器中运行代码,则她看起来应该看起来很奇怪。 如果有人知道为什么会发生这种情况,请告诉我。我尝试在Google上查找,但找不到任何内容。 谢谢!