Не пытаясь изменить структуру вашей программы до сих пор, вот «наивный» подход.
Вместо использования Anonymous Inner Class , выможно создать другой класс:
public class MyListener implements ActionListener {
private int x;
private int y;
public MyListener(int x, int y){
this.x = x;
this.y = y;
}
@Override
public void actionPerformed(ActionEvent e) {
//do something with this.x
//do something with this.y
}
}
, а затем вы можете адаптировать его к своему коду:
jBTN_field[y][x].addActionListener(new MyListener(x, y));
Теперь для доступа к координате кнопки это будет так просто:
button[y][x].
ПРИМЕЧАНИЕ
Ваш код не является логически неправильным.Я просто показываю вам альтернативу, которая может упростить для вас вещи, чтобы вы могли решить свою проблему более методично.Пример, который я показал, подходит, если вы хотите иметь одинаковую функциональность actionPerformed()
для всех кнопок.В противном случае анонимный внутренний класс более уместен.
В качестве альтернативы, если вы хотите сохранить свой код как есть, вы можете сделать:
jBTN_field[y][x].addActionListener(new ActionListener() {
int x = "value_for_x", y = "value_for_y";
@Override
public void actionPerformed(ActionEvent pE) {
//do something with x
//do something with y
}
}