@P_Alexander
First head

Как одним слушателем обработать много кнопок?

Циклом на панель создается много кнопок, эти кнопки загнаны в коллекцию, эти кнопки обрабатывает один внутренний класс который реализует интерфейс ActionListener, то есть один обработчик обрабатывает много кнопок.
Вопрос, как мне отличить какая нажата кнопка если она без имени??
  • Вопрос задан
  • 592 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Обработчик получает экземляр события, метод getSource() которого возвращает объект, с котором это событие произошло.

public class ClickListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        e.getSource().setText("Clicked");
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@zelan
Кратко обо мне не получится.
ActionListener l = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                //кнопка которая была нажата
                JButton button = (JButton) e.getSource();

                //идентификатор действия - предпочтительно использовать его
                //естественно при создании кнопки необходимо установить этот идентификатор
                String actionCommand = button.getActionCommand();
                //или даже без кнопки можно
               String actionCommand1 = e.getActionCommand();
                
                //среднячковый вариант
                String name = button.getName();
                
                //крайний и отвратительный вариант
                String text = button.getText();
            }
        };


этот слушатель должен быть добавлен в каждую кнопку, и в нем нужно описать то, что необходимо сделать в зависимости от идентификатора.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽