ActionListener, зная, какой компонент вызвал действие - PullRequest
0 голосов
/ 28 апреля 2020

Я хотел бы иметь ActionListener, чтобы иметь возможность выяснить источник, как показано в коде ниже. Как мне это реализовать?

JTextField tf1 = new JTextField();
JTextField tf2 = new JTextField();

ActionListener listener = new ActionListener(){
  @Override
  public void actionPerformed(ActionEvent event){
    if (source == tf1){//how to implement this?
      System.out.println("Textfield 1 updated");
    }
    else if (source == tf2){//how to implement this?
      System.out.println("Textfield 2 updated");
    }
  }
};

tf1.addActionListener(listener);
tf2.addActionListener(listener);

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

1 Ответ

1 голос
/ 28 апреля 2020

ActionEvent#getSource() возвращает объект (компонент), который породил событие:

ActionListener listener = new ActionListener() {
  @Override
  public void actionPerformed(ActionEvent event) {
    final Object source = event.getSource();
    if (source.equals(tf1)) {
      System.out.println("Textfield 1 updated");
    }
    else if (source.equals(tf2))
      System.out.println("Textfield 2 updated");
    }
  }
};
...