2016-08-24 5 views
0

у меня есть такой код,же 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); 

где

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

Я попытался,

ActionEvent action = new ActionEvent(Source, target); 

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

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

+0

Вы можете установить EventHandler в setOnAction(), а не ActionEvent. – Alexiy

ответ

3

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

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

component1.setOnAction(predefinedHandler); 
component2.setOnAction(predefinedHandler);