JavaFX に基づいてEventHandler<T>
、特定のアクションのリスナーを作成するのは非常に簡単です。議論のために、コードは次のようになります。
btn.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event) {
System.out.println("Hello World");
}
});
ここで、このイベントでより複雑なものを処理したいとしましょう (50 ~ 100 行のコードが必要だとしましょう)。同じアプローチを使用して、このすべてのコードをハンドラー内、つまりコントローラー内に配置できます。
これを少しすっきりさせたい場合は、EventHandler<T>
インターフェイスを実装できます。これは次のようになります。
public class LoginHandler implements EventHandler<ActionEvent> {
// list of parameters passed
public LoginHandler(ResourceBundle resources) {
//Resources along with other paramters I need to access
this.resources = resources;
}
@Override
public void handle(ActionEvent event) {
//...Logic goes here
System.out.println("doing my logic here - 50 to 100 lines");
((Node)(event.getSource())).getScene().getWindow().hide();
}
}
このようなアプローチは機能しますが、すべてのオブジェクト (ボタン、ラベル、テキスト ボックスなど) と ResourceBundle (アプリを国際化しようとする場合) をパラメーターとして渡す必要があります。
このすべての情報にアクセスする方法はありますか? EventHandler
基本的に、 ?からコントローラーにアクセスします。それとも、コントローラーにすべてを残すのがベストプラクティスですか?