Я только начал изучать, как использовать прослушиватели действий. В моем понимании это работает следующим образом:Каков общий способ программирования прослушивателей действий?
Есть несколько классов, которые содержат «addActionListener» метод по умолчанию (например, классы для кнопок).
Используя этот метод, мы добавляем к объекту прослушиватель действий. Например:
listenedObject.addActionListener(listeningObject)
.Когда выполняется действие с «listenedObject», вызывается метод «actionPerformed» для «listenObject». Таким образом, это означает, что когда мы программируем класс для объекта listenObject, нам нужно поместить туда метод actionPerformed.
Что мне непонятно, должен ли мы создать новый класс для каждого объекта, который мы хотим слушать. Мне это не кажется элегантным решением. С другой стороны, если у нас есть один класс слушателя действий для всех (или хотя бы многих) объектов, то у нас есть проблема, поскольку экземпляр этого класса не будет знать, какой объект вызывает метод actionPerformed (и нам нужно что действия, выполняемые actionPerformed, различаются в зависимости от того, кто вызван для этого метода).
На мой взгляд, для каждого прослушанного объекта нам нужно создать «персональный» прослушиватель действий, и мы можем сделать это, установив определенное значение в соответствующее поле прослушивателя действий. Но я не уверен, что это стандартный способ пойти? Как обычно люди это делают?
ОК. Понимаю. Кстати, что означает @Override? – Roman
Или даже: public void actionPerformed (ActionEvent e) {onMyButtonClicked();} - почти указатель метода –
@Override - это аннотация, это означает, что public void actionPerformed() переопределяет метод в своем суперклассе. Когда вы создаете встроенный анонимный класс, вы переопределяете ActionListener. Тебе просто не дано имя. –