2017-04-11 37 views
0

我正在尝试构建一个TicTacToe游戏并绘制游戏中的每个元素都应该禁用。如何找出我的数组中的所有JButton是否被禁用。在这里我分配了我创建的JButton。选择数组中的每个元素。 Java

for(int row = 0; row < buttons.length; row++){ 
     for(int column = 0; column<buttons[row].length; column++){ 
      buttons[row][column] = new JButton(); 
      this.add(buttons[row][column]); 
      buttons[row][column].addActionListener(new tickSquare()); 

     } 
    } 

,在这里我试图做循环,但它确实,如果一切无效

for(int row = 0; row < buttons.length; row++){ 
      for(int column = 0; column<buttons[row].length; column++){ 

       if(buttons[row][column].isEnabled() == false){ 
        JOptionPane.showMessageDialog(null,labelD); 
       } 

      } 
     } 

回答

1

不显示在if本身的消息对话框。使用循环更新变量并使用该变量外循环,以决定是否要显示弹出与否:

boolean allDisabled = true; 

for(int row = 0; row < buttons.length; row++){ 
    for(int column = 0; column<buttons[row].length; column++){ 

     if(buttons[row][column].isEnabled()){ 
      //This button is enabled, so we set allDisabled to false 
      allDisabled = false; 
     } 

    } 
} 

if(allDisabled) { 
    JOptionPane.showMessageDialog(null,labelD); 
} else { 
    // At least one button is enabled! 
} 

您也可以打破循环,以避免不必要的循环时启用按钮中找到:

boolean allDisabled = true; 

loop: 
for(int row = 0; row < buttons.length; row++){ 
    for(int column = 0; column<buttons[row].length; column++){ 

     if(buttons[row][column].isEnabled()){ 
      //This button is enabled, so we set allDisabled to false 
      allDisabled = false; 
      break loop; 
     } 

    } 
} 

但我不喜欢标签和休息,所以如果可能,我尽量避免使用它们。

+0

谢谢@BackSlash –

+0

@AzamatAdylbekov不客气!如果它帮助你解决问题,不要忘记接受答案:) – BackSlash