Получение местоположения события щелчка мыши из JButton

У меня есть что-то вроде этого:

public void actionPerformed(ActionEvent a) {    
    ((JButton)a.getSource()).setBackground(Color.red);              
}

Цвет успешно меняется, но мне нужно изменить значение в массиве int в соответствии с нажатой кнопкой. Как я могу получить координаты X и Y места, где щелкнули мышью, в массиве JButton?


person user3511875    schedule 24.06.2014    source источник
comment
Вместо этого используйте какой-нибудь Map или используйте Action, который предоставляет единая единица работы, которая может применяться к кнопкам, пунктам меню и привязкам клавиш   -  person MadProgrammer    schedule 24.06.2014
comment
не будут ли работать простые функции getX() и getY()?   -  person user2837260    schedule 24.06.2014
comment
@user2837260 user2837260: это получит расположение x и y нажатого компонента JButton, а не индекс строки и столбца.   -  person Hovercraft Full Of Eels    schedule 24.06.2014


Ответы (1)


Один из способов: используйте 2D-массив JButton и перебирайте массив с помощью вложенных циклов for, чтобы получить значение строки и столбца. Например...

int r = -1;
int c = -1;
for (int row = 0; row < buttons.length; row++) {
  for (int col = 0; col < buttons[row].length; col++) {
    if (buttons[row][col] == e.getSource()) {
      r = row;
      c = col;
    }
  }
}

Изменить: другие параметры (как упоминалось MadProgrammer), используйте карту для сопоставления вашего JButton или его действия с цветом.

person Hovercraft Full Of Eels    schedule 24.06.2014