有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java按钮。setEnabled在第一个循环中不起作用

我正在编写一个小游戏,我正在使用JFrame编写它。我创建了一个JPanel,其中有一个用JButtons创建的板。我必须检查是否有任何字母在列/行和对角线上是相同的。因此,我创建了一个方法,为我做到这一点。问题是,我在方法中输入的第一条语句不会禁用按钮,即使程序实际到达了该部分代码。所以我尝试了一些方法来修复它,但我不明白为什么第一个循环不会禁用按钮,而后面的循环会禁用按钮

 private void checkRepetitions()
{

    Boolean check = false;
    int i, j;
    //check in line
    i = lastI;

        for (j = 0; j < 8; j++) {
            if (tab[lastI][lastJ].getText().equals(tab[i][j].getText()) && lastI != j && !tab[lastI][lastJ].getText().equals("")) {
                confirm.setEnabled(false);
                check = true;
                break;
            } else {
                confirm.setEnabled(true);

            }
        }


    //checkin column
    j = lastJ;

        for (i=0; i<8; i++){
            if(tab[lastI][lastJ].getText().equals(tab[i][j].getText()) && lastI != i && !tab[lastI][lastJ].getText().equals("")){
                confirm.setEnabled(false);
                check = true;
                break;
            }
            else{
                confirm.setEnabled(true);
            }
        }


    //scheck diagonally
    i = 0;
    j = 0;

    if (lastJ == lastI) {
        while (i<7 && j<7) {

            if(tab[lastI][lastJ].getText().equals(tab[i][j].getText()) && lastI != i && !tab[lastI][lastJ].getText().equals("")){
                confirm.setEnabled(false);
                check = true;
                break;
            }

            else if(i<8&& j<8){
                i++;
                j++;
            }

            else{
                confirm.setEnabled(true);
            }
        }
    }
    //check diagonally
    i = 0;
    j = 7;
    if (lastI + lastJ == 7) {
        while (true){

            if(tab[lastI][lastJ].getText().equals(tab[i][j].getText()) && lastI != i && lastJ != j && !tab[lastI][lastJ].getText().equals("")){
                confirm.setEnabled(false);
                check = true;
                break;
            }
            else{
                confirm.setEnabled(true);
            }
            if (i == 7 && j == 0){
                break;
            }
            else{
                i++;
                j--;
            }


        }
    }

}

lastIlastJ是保存用户最后单击的按钮位置的变量,对于该按钮,我检查是否有重复confirm按钮应该被禁用,除了第一个for循环外,它对每个循环都会禁用Boolean目前未使用,因此不会影响代码


共 (0) 个答案