我正在尝试构建一个TicTacToe游戏并绘制游戏应该禁用我的2D阵列中的每个元素。如何确定我的数组中的所有JButton是否都被禁用。我分配了我创建的JButton。
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);
}
}
}
答案 0 :(得分: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;
}
}
}
但我不喜欢标签和休息,所以如果可能的话我尽量避免使用它们。