Один и тот же ActionEvent для нескольких компонентов

У меня есть такой код,

component1.setOnAction((ActionEvent event) -> {
           for(int i=0; i<=10; i++){
            System.out.println(i);
           }
        });

component2.setOnAction((ActionEvent event) -> {
           for(int i=0; i<=10; i++){
            System.out.println(i);
           }
        });

Чтобы избежать дублирования кода, я пытаюсь что-то вроде

component1.setOnAction(action);
component2.setOnAction(action);

куда,

action = // как я могу определить здесь цикл for.

Я старался,

 ActionEvent action = new ActionEvent(Source, target); 

Конструктор ActionEvent запрашивает источник и цель (которые я не совсем понял, как их использовать).

Как я могу достичь этого?


person user3164187    schedule 24.08.2016    source источник
comment
Вы можете установить EventHandler в setOnAction(), а не в ActionEvent.   -  person Alexiy    schedule 24.08.2016


Ответы (1)


Для setOnAction() требуется EventHandler, а не ActionEvent. Ничто не мешает вам определить EventHandler и повторно использовать его для нескольких компонентов.

EventHandler predefinedHandler = (e) -> {
   for (int i = 0; i <= 10; i++) {
      System.out.println(i);
   }
};

component1.setOnAction(predefinedHandler);
component2.setOnAction(predefinedHandler);
person Dth    schedule 24.08.2016