JButton
으로 채워진 GridLayout
입니다. 버튼을 누를 때 JButton
클릭 한 인접 버튼을 제외한 모든 버튼을 비활성화하고 싶습니다.ArrayOutOfBoundsException을 방지하는 방법은 무엇입니까?
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'가 발생하지 않습니다! –