私はJavaFXを初めて使用しています。現在の設定では、適切なMVCアーキテクチャを作成するのに苦労しています。 Scene Builderを使用してUIをクリックし、Controllerクラスを指定しました。シーンビルダを使用したJavaFXのMVCパターン
スタートアップ:
public class Portal extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("PortalUI.fxml"));
stage.setTitle("Portal");
stage.setScene(new Scene(root));
stage.show();
}
}
とコントローラクラスは、コードの残りの部分が含まれています。
public class AccommodationPortalView implements Initializable {
@Override
public void initialize(URL url, ResourceBundle resources) {
// Work here.
}
}
私の教授は、このアプリケーションの懸念事項と責任をさらに分けるよう求めました。コントローラーは状態の管理とバックエンドとの会話だけでなく、ビューの更新も行っています。
私の最初の応答は、ControllerクラスをViewにし、ControllerとModelの2つの他のクラスを作成することでした。
しかし、私はこれらの部分をどのように接続するのか迷っています。 Viewをインスタンス化する必要はありません。たとえば、Controllerに渡すことのできるViewインスタンスはありません。次に、それらをすべてシングルトンにして、単に実行時にControllerがそれらをフェッチするようにしてみましたが、それはエラーです。
public class Portal extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("PortalUI.fxml"));
stage.setTitle("Portal");
stage.setScene(new Scene(root));
stage.show();
// Controller gets a View and Model instance in initialize();
// Error: Instantiation and Runtime Exception...
PortalController.INSTANCE.initialize();
}
}
現在の設定を使用してMVCパターンを正しく設定するにはどうすればよいですか?別のアーキテクチャが必要ですか?
こんにちは!答えをありがとう、リンクも素晴らしいリソースでした!私はコントローラーにアクセスできます。私は今それを理解していると思う。これは私が慣れ親しんできたものとは非常に異なるアーキテクチャです。私を助けてくれてありがとう – IAE