Сначала вы должны создать собственный класс для слушателя, а не анонимный, поскольку для него нужны параметры (x и y).
private static class ButtonMouseListener extends MouseAdapter {
private final int x;
private final int y;
public ButtonMouseListener(int x, int y) {
this.x = x;
this.y = y;
}
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1) {
JOptionPane.showMessageDialog(null, "Left -> " + x + " | " + y);
} else if (e.getButton() == MouseEvent.BUTTON3) {
JOptionPane.showMessageDialog(null, "Right -> " + x + " | " + y);
}
}
}
Затем вы можете использовать свой код следующим образом:
for (int y = 0; y < y_length; y++) {
for (int x = 0; x < x_length; x++) {
buttons[x][y] = new JButton("X");
buttons[x][y].addMouseListener(new ButtonMouseListener(x, y));
mines_array.add(buttons[x][y]);
}
}
Вот и все, веселись.
Что касается размера кнопок, если вы используете макет в родительском контейнере, их размер будет автоматически рассчитан макетом и не может быть изменен с помощью setSize ().