2016-09-27 35 views
1

我有一个问题:是否有任何可能性设置一个Button的eventHandler来触发/触发另一个Button的eventHandler?ActionEventHandler JavaFX

buttonA的eventHandler将触发/触发buttonC的eventHandler。 如果是的话,如果有人可以提供一些样本,将不胜感激。 我目前面临的问题,因为我无法从其他按钮关闭阶段2(我觉得非常由于类的可见性)

button4.setOnAction(new EventHandler<ActionEvent>(){ 
    @Override 
    public void handle(ActionEvent e){ 
     stage1.close(); 
     **stage2**.setScene(scene); 
     **stage2**.show(); 
    } 
}); 

回答

0

是的,你可以使用fire

Button button1 = new Button("Button 1"); 
button1.setOnAction(e -> System.out.println("Button 1 pressed!")); 

Button button2 = new Button("Button 2"); 
button2.setOnAction(e -> { 
    System.out.println("Button 2 pressed! Pressing Button 1 ..."); 
    button1.fire(); 
}); 

输出

Button 2 pressed! Pressing Button 1 ... 
Button 1 pressed! 

但这种方法是不建议的。你可以封装处理的内容转换成一个方法,你可以直接在处理所谓:

Button button1 = new Button("Button 1"); 
button1.setOnAction(e -> actionToBeDone()); 

Button button2 = new Button("Button 2"); 
button2.setOnAction(e -> { 
    System.out.println("Things done on Button 2 press"); 
    actionToBeDone(); 
}); 

和方法

private void actionToBeDone(){ 
    System.out.println("Things done on Button 1 press"); 
} 

输出

Things done on Button 2 press 
Things done on Button 1 press 
+0

嗯.. .. 我会试一下。因为目前我正试图重复使用不同层次的按钮和事件处理程序中的相同按钮。 –

+0

我认为自己感到困惑。我其实想要在具有相同按钮的不同阶段触发相同的按钮。例如:当我在应用程序的主页面上时,我想要进入一个新的阶段(打印报告),在那个阶段,我想单击主页面中已存在的管理用户(按钮)按钮(主要阶段)如何通过点击同一个按钮来触发该事件?大声笑...如果我迷惑你们,我很抱歉。 –

+0

如果您有不同阶段的控制器(您应该有),您可以在控制器中公开所提到的方法,然后可以从第一个控制器调用该方法。方法是一样的。 – DVarga