0
for(int i =0; i<8;i++){
  for(int j =0; j<8;j++){
    Ratsuk.getNewtablero().getMesa(i,j).setBackground(matrizcolor[i][j]);
    if (Ratsuk.getNewtablero().getMesa(i,j).getBackground()==Color.lightGray);
    Ratsuk.getNewtablero().getMesa(i,j).setEnabled(false);
  }
}

Ratsuk.getNewtablero().getMesa(i,j)用于调用 newtablero 内部的 JButton 2d 数组,而 matrizcolor 是相同大小的颜色的 2d 数组。

当它运行时,该阵列中的所有按钮都被禁用,不仅是浅灰色的。任何1可以解释我为什么?

4

1 回答 1

10

内部 if 语句后有一个分号。

if (Ratsuk.getNewtablero().getMesa(i,j).getBackground()==Color.lightGray);

这会导致下一行每次都执行。请记住,编译器会将 (1) 单个语句或 (2) 单个块与任何 if 语句相关联。在这种情况下,编译器将单个语句与该 if 语句相关联,但单个语句只是一个分号,实际上什么都不做。在分号语句“执行”之后,程序继续正常执行下一行:

Ratsuk.getNewtablero().getMesa(i,j).setEnabled(false);

不管 if 语句的真假值。删除分号,您的问题将得到解决。

于 2013-07-09T17:34:52.880 回答