2016-09-27 38 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