【发布时间】:2014-10-12 17:34:27
【问题描述】:
我有一个GridLayout,里面填满了JButton。当我按下一个按钮时,我想取消激活除了与单击的JButton 相邻的按钮之外的所有按钮。我有这个代码:
btnLetter.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < tab.length; i++) {
for (int j = 0; j < tab.length; j++) {
tab[i][j].setEnabled(false);
for (int ii = 0; ii < tab.length; ii++) {
for (int jj = 0; jj < tab.length; jj++) {
if (tab[ii][jj] == (JButton) e.getSource()) {
tab[ii][jj + 1].setEnabled(true);
tab[ii + 1][jj + 1].setEnabled(true);
tab[ii + 1][jj].setEnabled(true);
tab[ii - 1][jj].setEnabled(true);
tab[ii - 1][jj + 1].setEnabled(true);
tab[ii - 1][jj - 1].setEnabled(true);
tab[ii][jj - 1].setEnabled(true);
tab[ii + 1][jj - 1].setEnabled(true);
}
}
}
}
}
}
}
});
【问题讨论】:
-
当
ii==0时,ii - 1的值是多少?使用for/each循环,您将不会有这些one off errors!
标签: java arrays jbutton actionlistener