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
Vous devez vous connecter pour publier un commentaire.
Votre,
-- Vue est l'un des principaux
Stage
fournis par le JavaFX plate-forme au démarrage. Cette étape est la seuleScene
(que vous avez créé et défini), ce qui a un nœud parent contenuroot
(la variable). Cetteroot
nœud est défini par FXMLLoader et représente la mise en page/nœud de la structure est définie dans le "PortalUI.fxml" fichier.En d'autres termes
Stage -> Scene -> PortalUI.fxml(root)
permettra de définir l'affichage de la partie.-- Contrôleur est la classe qui implémente
Initializable
et que vous avez spécifié dans votre PortalUI.fichier fxml avec fx:controller=" " attribut. La classe que vous avez spécifié (PortalController je suppose) sera créé et a invoqué soninitialize()
méthode par le FXMLLoader. À savoir le Contrôleur sera créé lors de la PortalUI.fxml fichier est chargé, de sorte que vous n'avez pas besoin de créer et d'initialiser les vous-même. Pour obtenir le créé/initialisé à l'instance du contrôleur du FXMLLoader regarder la L'accès FXML contrôleur de classe.-- Modèle est la structure de données stockées et gérées par le contrôleur. Il peut être tout ce qui représente la "data". Par exemple, une Personne, PortalInfo etc. classes.
OriginalL'auteur Uluk Biy