Как по нажатию на JButton JAVA задать действие "нескольким и т.д." кнопкам

Изучаю Java, всю инфу беру с интернета, где-то могу ошибаться поэтому прошу помощи. Практикуюсь постоянно, пишу сейчас вот второе приложение(назовём его так) аналогия минёр. Так вот мне нужна логика чтобы по нажатию на кнопку(поле у меня состоит из кнопок и весь визуал тоже вставлен в кнопки, может это не умно но и я в джаве пока не умный) исчезали парочку ближайших. Jbutton созданы в цикле через двумерную матрицу им заданы getName. По факту я могу вытянуть всё от нужных мне кнопок, но как их задействовать ума не приложу, имеются их координаты, getName и т.д. но в моем случае в mouseLitener я не знаю как это реализовать. файл с проекта тык

я не знаю какую часть кода сюда вставить, поэтому прошу зайти на гит я все отделы подписал, знающему будем весьма понятно. вот раздел создания кнопок

int yLength = 0;

        for (int i = 0; i <= table.length - 1; i++) {
            for (int j = 0; j <= table[i].length - 1; j++) {
                if (table[i][j] == bom) {
                    jButtonMine = new JButton();
                    jButtonMine.setIcon(button.getIcon());
                    jButtonMine.setName("mine" + indexMine++);
                    jButtonMine.setBounds(j * SCALE, yLength * SCALE, SCALE, SCALE);
                    action = new Action(jButtonMine);
                    jButtonMine.addActionListener(action);
                    jButtonMine.addMouseListener(action);
                    add(jButtonMine);

                } else {

                    jButtonTable = new JButton();
                    jButtonTable.setIcon(button.getIcon());
                    jButtonTable.setName("table" + indexTable++);
                    jButtonTable.setBounds(j * SCALE, yLength * SCALE, SCALE, SCALE);
                    action = new Action(jButtonTable);
                    jButtonTable.addActionListener(action);
                    jButtonTable.addMouseListener(action);
                    add(jButtonTable);
                }
            }
            yLength++;
        }

В этом классе логика слушателя

class Action implements ActionListener, MouseListener {
        public Action(JButton button) {
            tap = button;
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            JButton b = (JButton) e.getSource();


            System.out.println(e.getSource());

            for (int i = 1; i < indexTable; i++) {
                if (b.getName().equals("table" + i) && tap == b) {
                    b.setIcon(button.getIcon());
                } else if (b.getName().equals("mine" + i) && tap == b) {
                    b.setIcon(jButtonMine.getIcon());
                }
            }
            repaint();
        }

        private final JButton tap;

        @Override
        public void mouseClicked(MouseEvent e) {

        }

        @Override
        public void mousePressed(MouseEvent e) {
            JButton b = (JButton) e.getSource();
            if (e.getButton() == MouseEvent.BUTTON3) {

                for (int i = 1; i < indexTable; i++) {
                    if (b.getName().equals("table" + i) && tap == b) {


                        b.setIcon(new ImageIcon("src/main/resources/iconFlag.png"));
                    } else if (b.getName().equals("mine" + i) && tap == b) {
                        b.setIcon(new ImageIcon("src/main/resources/iconFlag.png"));

                    }
                }
            } else if (e.getButton() == MouseEvent.BUTTON1) {

                for (int i = 1; i < indexTable; i++) {
                    if (b.getName().equals("mine" + i) && tap == b && b.getIcon() == button.getIcon()) {
                        JOptionPane.showMessageDialog(jFrame, "ОПА! ну шо ты дорогой, на в ебало!");
                        System.exit(0);
                    } else if
                    (b.getName().equals("table" + i) && tap == b && b.getIcon() == button.getIcon()) {
                        b.setVisible(false);

                    }
                }
            }

        }

        @Override
        public void mouseReleased(MouseEvent e) {

        }

        @Override
        public void mouseEntered(MouseEvent e) {

        }

        @Override
        public void mouseExited(MouseEvent e) {

        }
    }

не знаю что ещё, выше прикрепил ссылку на GitHub


Ответы (2 шт):

Автор решения: web developer

Вот как пример прослушиватель действий который слушает несколько кнопок

public class Calc extends JFrame implements ActionListener {

private Button button1;

public Calc()
{
    super();
    this.setSize(100, 100);
    this.setVisible(true);

    this.button1 = new JButton("1");
    this.button1.addActionListener(this);
    this.add(button1);
}


public static void main(String[] args) {

    Calc calc = new Calc();
    calc.setVisible(true);
}

public void actionPerformed(ActionEvent e) {
    if(e.getSource() == button1)
}  

}

→ Ссылка
Автор решения: 0d1ns0n

Upd. Реализовал логику путем создания матрицы jbutton , что позволяет фактически достучаться быстро до любой кнопки, и задать ей реализацию, в моем случае , функционал минера, при нажатии на пустое поле открывается несколько ближайших где нет мин.

Кому интересно, скину код сюда позже.

→ Ссылка