2D JButtons数组未正确获取clientProperty

时间:2015-05-21 12:44:54

标签: java arrays jbutton

简介

我正在尝试创建一个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

1 个答案:

答案 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();

我认为你会得到你想要的东西(或者至少修正一个错误)。