Modèle MVC dans Avec JavaFX Scene Builder

Je suis nouveau sur JavaFX et je suis mal à créer une bonne architecture MVC compte tenu de ma configuration actuelle. J'ai cliqué ensemble d'une INTERFACE utilisateur à l'aide de la Scène Builder et désigné un Contrôleur de classe.

De démarrage:

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();
    }
}

Et la classe de Contrôleur contient le reste du code.

public class AccommodationPortalView implements Initializable {
    @Override
    public void initialize(URL url, ResourceBundle resources) {
    //Work here.
    }
}

Mon professeur m'a demandé de continuer à séparer les préoccupations et les responsabilités de cette application. Le Contrôleur n'est pas seulement la gestion de l'état et de parler avec le backend, mais aussi la mise à jour de la Vue.

Ma première réponse a été de laisser le Contrôleur de classe deviennent le point de Vue et de créer deux autres classes pour le Contrôleur et le Modèle.

Cependant, je suis à une perte sur la façon de connecter ces pièces. Je n'ai jamais besoin d'instancier la Vue, donc il n'y a pas d'instance de Vue que je peux passer à mon Contrôleur, par exemple. Ensuite, j'ai essayé de faire tous les singletons et simplement laisser Contrôleur de les récupérer au moment de l'exécution, mais qui me donne une erreur.

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();
    }
}

Comment puis-je configurer correctement un modèle MVC à l'aide de ma configuration actuelle? Est différente de l'architecture?

OriginalL'auteur IAE | 2012-06-03