java - Finding the source of an ActionEvent in a JButton[][] array without using nested loops? -
i've created jframe
application 8x8 array of jbuttons[][]
corresponding array of selected & deselected imageicon
s. when button pressed, selects button using setselection()
, deselects other buttons. however, if button adjacent selected button pressed, selected button , adjacent button swap imageicons
.
i've managed of this, using nested loops within actionevent
determine adjacent buttons, selected button, , deselected buttons simultaneously becomes logical nightmare.
public void actionperformed(actionevent event) { (int row = 0; row < 8; row++) { (int col = 0; col < 8; col++) { if (event.getsource() == buttons[row][col]) { if (row<7) buttonsadjacent[row+1][col] = true; if (row>0) buttonsadjacent[row-1][col] = true; if (col<7) buttonsadjacent[row][col+1] = true; if (col>0) buttonsadjacent[row][col-1] = true; buttons[row][col].setselected(true); } } } }
how can put actionlisteners
each adjacent button @ array index [row][col]
determine if adjacent button has been pressed? , how can reassign actionlisteners
every time new button has been selected?
as shown in complete example, can calculate index of jbutton
in list<jbutton>
function of row , column given grid size, e.g. n * n
. see comments , edit history alternatives.
private static final int n = 5; private jbutton getgridbutton(int r, int c) { int index = r * n + c; return list.get(index); }
Comments
Post a Comment