2016-09-27 1 views
1

私は疑問を持っている:Button設定するには、いずれかの可能性があるのなeventHandlerのEventHandlerが発射するには、/別のButtonをトリガー '?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

うーん..私はそれを試してみます。現時点では原因は私は自分自身を混同してしまったと思うボタンとなeventHandler –

+0

の異なる層で同じボタンを再利用しようとしています。私は実際に同じボタンを持つ別のステージで同じボタンをトリガーしたかったのです。例えば:私は、アプリケーションのメインページで午前とき、私はすでにメインページ(メインに存在する管理ユーザー(ボタン)のボタンをクリックしてみたかったという段階で(レポートの印刷)新たなステージに行きたかったですステージ)同じボタンをクリックしてイベントをトリガーするにはどうすればよいですか? LOL ...あなたを混乱させてしまったらすみません。 –

+0

あなたは異なる段階のためのコントローラ(あなたが持っている必要があります)を持っている場合、あなたは、あなたが最初のコントローラからメソッドを呼び出すことができ、コントローラに記載の方法を公開することができます。方法は同じです。 – DVarga