Что делает addActionListener?

У меня есть следующий код:

JButton button = new JButton("Clear");
button.addActionListener(this);

Насколько я понимаю, что создаю кнопку, на которой это записано "Ясный". Затем я должен связать действие с этой кнопкой (что произойдет, если кнопка будет нажата), и это сделано addActionListener. Действительно ли это правильно?

Но то, что я не понимаю, - то, где действие указано. Нажатие кнопки должно область открытого текста и, насколько я понимаю, должен быть где-нибудь код, которые очищают текстовую область. Но в данном примере существует только "это" в аргументах addActionListener().

Как программа знает, что должна очистить текстовую область при нажатии кнопки?

Если это необходимо, полный код дан здесь.

10
задан flexdroid 16 April 2015 в 05:53
поделиться

3 ответа

ActionListener - это механизм обратного вызова. Всякий раз, когда будет добавлен контроль, чтобы пожарить ActionEvent , будет включен Public Faceperformed (ActionEvent E) .

То, что я не понимаю, это то, где вызывается ActionPerformed. Я вижу, что он определяется в классе, но нет места, где называется этот метод.

Это называется внутренними механизмами компонента UI. Концептуально, вы можете подумать о коде, который выглядит так, как это так:

public class Button {
  private final List<ActionListener> listeners = new ArrayList<ActionListener>();

  public void addActionListener(ActionListener l) {
    listeners.add(l);
  }

  public void click() {
    ActionEvent event = new ActionEvent(this, 0, "click");
    for (ActionListener l : listeners) {
      l.actionPerformed(event);
    }
  }
}
17
ответ дан 3 December 2019 в 19:32
поделиться

Каждый JButton , имеет EventListenerLList . Вызов AddactionListener (это) Добавляет ваш ActionListener , функция обратного вызова с именем ActionPerformed () , в список. Вы можете увидеть план кода, который вызывает ваш метод здесь . Фактический метод обхода () находится в Абсонтетон . A JBUTTON - это jComponent , который вы можете , см. Перечисленные среди различных классов, которые используют механизм списка прослушивателя событий.

2
ответ дан 3 December 2019 в 19:32
поделиться

Вызывается button.addActionListener (this) , поскольку этот реализует интерфейс ActionListener . При нажатии кнопки вызывается метод actionPerformed (ActionEvent e) (определяется интерфейсом и реализуется классом).

1
ответ дан 3 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: