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--;
}
}
}
}
lastI
和lastJ
是保存用户最后单击的按钮位置的变量,对于该按钮,我检查是否有重复confirm
按钮应该被禁用,除了第一个for
循环外,它对每个循环都会禁用Boolean
目前未使用,因此不会影响代码
共 (0) 个答案