我正在尝试创建一个cheeckers游戏,我在其中初始化一个8x8阵列,用白色和黑色按钮填充它来创建游戏桌
然后我填写1,2 || 5,6行,白色和黑色的棋子有一个循环,我将它们命名为BLACK和WHITE棋子,得到它们的索引并将一个关于它们颜色的clientProperty。
现在出现了棘手的部分,在我创建棋子的同一个循环中,按钮的文本被填充好(1,2 || 5,6行)但是颜色,因为clientProperty被填充到完全不同索引
你只能进行0,1和4,5排其他人投掷NPE。
这是填补棋子的循环..
for (int pos = 0; pos < bSquares.length; pos++) {
for (int line = 0; line < bSquares[pos].length; line++) {
if(line == 1 || line ==2){
bSquares[pos][line].putClientProperty("pawnColor", "black");
bSquares[pos][line].setText("BLACK PAWN ");
bSquares[pos][line].putClientProperty("pos", pos);
bSquares[pos][line].putClientProperty("line", line);
bSquares[pos][line].putClientProperty("type", "normal");
bSquares[pos][line].addActionListener(new select());
}
else if(line == 5 || line == 6){
bSquares[pos][line].putClientProperty("pawnColor", "white");
bSquares[pos][line].setText("WHITE PAWN");
bSquares[pos][line].putClientProperty("pos", pos);
bSquares[pos][line].putClientProperty("line", line);
bSquares[pos][line].putClientProperty("type", "normal");
bSquares[pos][line].addActionListener(new select());
bSquares[pos][line].putClientProperty("locos", "normal");
}
}
如果需要,这是全班进一步阅读 http://pastebin.com/PswKMgT5
答案 0 :(得分:0)
您的代码中可能存在其他错误,但正如评论中所提到的,您有时会引用bSquares
bSquares[pos][line]
,有时引用bSquares[line][pos]
。无论哪种方式都有效,但你需要保持一致。
从以下位置更改此行:
final String nos = bSquares[line][pos + 1].getClientProperty("pawnColor").toString();
到
final String nos = bSquares[pos + 1][line].getClientProperty("pawnColor").toString();
我认为你会得到你想要的东西(或者至少修正一个错误)。