与多个组件相同的ActionEvent

时间:2016-08-24 12:05:56

标签: javafx 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构造函数请求源和目标(我不清楚如何使用)。

我怎样才能实现这个目标?

1 个答案:

答案 0 :(得分: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);