Доступ к кнопкам в GridLayout

#java #oop #swing #user-interface #actionlistener

#java #ооп #swing #пользовательский интерфейс #actionlistener

Вопрос:

Я играю в крестики-нолики со многими взаимосвязанными классами и столкнулся с небольшой проблемой. В моей версии я пытаюсь изменить размер платы, что означает, что на кнопки, представляющие каждый квадрат, нельзя легко ссылаться. Есть ли способ определить, какая кнопка нажата, если да, то как? Спасибо!

 public class GameView extends JFrame{  
    private static final long serialVersionUID = -2869672245901003704L;
    public TicBoard game;
    private GridLayout view;

    public GameView(int height, int width)//height and width are coordinates (-y,x) across all classes
    {
        super("Tic Tac Toe");
        game = new TicBoard(height, width);
        view = new GridLayout(height,width);

        this.setLayout(view);
        for(int h = 0; h<height; h  )
            for(int w = 0;w<width;w  )
                this.add(game.getButton(h,w));

    }       
}
  

Комментарии:

1. «В моей версии я пытаюсь изменить размер платы», JButton[] (или JButton[][] ) может быть любого размера по мере необходимости. Массив может содержать ссылки на кнопки.

Ответ №1:

Есть ли способ определить, какая кнопка нажата, если да, то как?

ДА.

Добавьте ActionListener к кнопкам, тогда в actionPerformed(ActionEvent e){...} методе у вас будет e.getSource() метод для определения того, что вызвало этот метод, означает, какая кнопка нажата.