0
私は以下のコードを使用して情報を渡していますが、私は他の方法を知りたいと思います。 FXMLDocumentControllerのイベントハンドラメソッドhandleSubmitButtonActionでは、MainFXMLファイルをロードする別のウィンドウを作成します。その後、私はそのコントローラを手に入れ、私の情報をメインウィンドウに送ります。それを行う良い方法はありますか?JavaFXのウィンドウ間で情報を渡す最善の方法はどれですか?
public class FXMLDocumentController implements Initializable {
@FXML
private TextField user;
@FXML
public void handleSubmitButtonAction(ActionEvent event) throws IOException {
Alert dialogo = new Alert(Alert.AlertType.INFORMATION, "User: " + user.getText() + " logged in.");
dialogo.showAndWait();
Stage stage2 = (Stage) user.getScene().getWindow();
stage2.close();
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("MainFXML.fxml"));
Parent root = (Parent) fxmlLoader.load();
MainFXMLController controller = fxmlLoader.<MainFXMLController>getController();
Scene scene = new Scene(root);
Stage stage = new Stage();
stage.setScene(scene);
stage.show();
controller.setUser(user.getText());
}
アプリケーションをMVCの意味でシングルトンインスタンスの「コントローラ」として使用しますか?可愛いわけではありませんが、FXコントローラーのクラスを切り離します。 –
私は、どちらが最善の方法であるかを知りたいと思います。すべてのjavafxアプリケーションは、その性質上、fxmlファイルのためMVCです。 –
ベスト・ウェイは単なる意見です。誰もが異なる意見を持つことができます。だから、あなたはさまざまな意見に基づいて多くの異なる答えを得ることができ、あなたは最善の方法を決定することに近づくことはありません。とにかく、大規模なアプリケーションの場合、IMOは、[Gluon Ignite](http://gluonhq.com/labs/ignite/)のような依存性注入メカニズムを使用して、注入されたオブジェクトにJavaFX Beanに観測可能なプロパティを作成させ、プロパティの変更をバインドまたはリッスンします。しかし、一方で、あなたの質問にある解決策があなたのために最適かもしれません、あなたが決定します。 – jewelsea