Comment implémenter correctement MVC en Java avec Swing?
Si vous souhaitez plus de détails s'il vous plaît laissez-moi savoir, ou consultez les dernières lignes de cette question. J'ai déjà lu beaucoup de choses et je sens que je suis en tournant quelque chose de simple en quelque chose de compliqué et j'ai toujours coincé ici et là, peut-être que vous pouvez m'aider dans ces points très précis.
Je suis à l'aide de Netbeans IDE 7 et JDK 7, et non cadres. La première Fenêtre est une JFrame et de toutes les autres fenêtres sont JDialogs avec modal=true.
Questions:
- Comment puis-je mettre correctement en œuvre le modèle MVC avec swing?
À partir des idées soufflet Qui est le meilleur: (A) ou (B)? Ou peut-être une autre... Pourquoi est-il mieux?(A)
Principal:MyModel model MyView view(model)
Mavue:
MyController(this, model)
(B)
Principal:MyModel model MyView View MyController controller(view, model)
- lorsque je clique sur jbutton1 dans MainFrame-je besoin pour ouvrir le SettingsFrame pour la modification des paramètres. où dois-je créer une instance de la Vue, le Modèle et le Contrôleur de la SettingsFrame? Dans MainFrame Contrôleur?
- En termes de MVC organisation et la mise en œuvre, comment dois-je gérer plus de caractéristiques spécifiques qui (apparemment), il manque un ou deux de la MVC "jambes" (soit le Modèle ou la Vue d'un Contrôleur ou d')? Devrais-je créer un vide classes?
a. The implementation of a TrayIcon b. A URL connection class (an HttpsUrlConnection which will update data in the main jframe and also upload/download files) c. A Directory Monitor (which will update data in the main jframe and also use the urlconnection to download a file) d. My own implementation of TableModel e. json
- Comment bien conserver et utiliser un objet avec les paramètres par le biais de l'ensemble de l'application? J'ai besoin c'est de l'information dans différents lieux (points de Vue, des Modèles, des Contrôleurs), mais il peut être modifié par l'utilisateur lors de l'exécution). Est-ce une bonne idée pour faire de ce modèle un singleton?
- Que dois-je faire lorsque:
a. View needs some data from the Model? What I'm doing: using the reference of Model which I keep in the View b. View needs some data from the Controller? What I'm doing: using the reference of Controller which I keep in the View c. Model needs some data from the Controller? Still didn't happen but I have no idea how to do correctly d. Model needs some data from the View? What I'm doing: pulling all my hair from my head... e. Controller needs some data from the View? What I'm doing: using the reference of the View which I keep in the Controller f. Controller needs some data from the Model? What I'm doing: using the reference of the Model which I keep in the Controller g. One of FooModel, FooView or FooController needs data from one of BarModel, BarView or BarController? What I'm doing: thinking of jumping from the highest building...
- Tous les conseils sur la façon de savoir si j'ai mis en place MVC correctement? Dois-je de données massives dans le Modèle ou le Contrôleur?
- Je suis aussi à l'aide d'un DAO, ce que je fais: mon modèle possède un
ArrayList Monmodèle load()
méthode qui crée une instance de la DAO et renvoie la liste de tableaux de Modèles retourné par le DAO, et puis parfois j'ai procédé de cette liste de tableaux de Modèles dans le Modèle et parfois j'permettre au Contrôleur de processus. Est-ce une bonne pratique ou est-il un meilleur moyen? Par Processus, je veux dire: itérer sur la liste de tableaux et d'obtenir les données à partir des modèles.
- J'Ai un PasswordCheck jDialog pour restreindre l'accès à certains points de Vue. Comment puis-je réutiliser en termes de MVC, afin que je puisse utiliser la même PasswordCheck dialogue pour autoriser ou restreindre l'accès à différents points de Vue sans faire un désordre dans le code?
- Tout autre conseils, des astuces, des idées, des suggestions?
Contexte:
Je suis nécessaires pour développer une Java Swing MVC logiciel dans un court laps de temps, bien que, par défaut, je ne suis pas un développeur Java et donc pas utilisés pour mettre en œuvre le modèle MVC, spécialement en Java (j'ai l'idée, mais parfois, il me manque des connaissances pour mettre en œuvre la relation entre les classes).
Les applications sont essentiellement un moniteur local/les fichiers en ligne avec une JTable dans le cadre principal pour afficher ces données. Je suis l'aide de la nouvelle WatchService API pour garder la trace des fichiers locaux et la sauvegarde de leur info dans un h2 de la base de données à l'aide d'un DAO, et leur recharger ces données dans le cadre des jtable. Je doit également informer l'utilisateur sur les nouveaux fichiers (car je suis en utilisant le TrayIcon). Pour la mise en ligne des fichiers de contrôle/téléchargement/téléchargement, je suis en utilisant HttpsUrlConnection et json. Il peut également permettre à des Paramètres de personnalisation.
Merci d'avance pour votre temps et vous aider.
OriginalL'auteur dcr | 2012-06-07
Vous devez vous connecter pour publier un commentaire.
Ont un coup d'oeil à Sun (Oracle) suggestions.
Comme une simplification, vous pourriez avoir un ensemble de composants (modèle, vue, contrôleur) s'enregistrer avec une application de niveau supérieur afin de fournir un point de référence unique plutôt que de références individuelles entre chaque composant (A ou B). L'article que je cite fournit des idées pour pousser et tirer; je vous recommande de pousser plus populaire de la modernité. Divulgation: j'ai de l'expérience avec Java et MVC, mais pas de MVC en Swing en soi.
Oui, bien sûr, ou à un niveau supérieur composant de l'application.
Je voudrais mettre en œuvre GUI-que des morceaux comme votre propre bibliothèque d'interface graphique. Et purement algorithme/service des pièces comme les services de la bibliothèque.
Traitement des données des algorithmes cadrerait bien dans un contrôleur ou même le service de la bibliothèque; votre modèle ne doit pas faire beaucoup de traitement à tous, au-delà, éventuellement, conversion de type de données ou de validation.
Voir ma note sur l'enregistrement; un singleton peut être approprié.
Merci pour la réponse. Qu'entendez-vous par "voir ma note sur l'enregistrement"? J'ai vu des soleils suggestion avant, mais, puisque vous l'a recommandé, je vais le relire plus attentivement, et essayez de résoudre mes doutes. J'ai aussi upvoted.
+1 Voir aussi ce exemple, qui suit une plan similaire au diagramme de la cité.
par ma note sur l'enregistrement, je voulais simplement dire que vous pouvez vous inscrire "chaque composant (modèle, vue, contrôleur)... avec une application de niveau supérieur afin de fournir un point de référence unique." Si seulement un haut niveau de l'objet application est partagée; les paramètres ou d'autres données pourraient être reach-mesure via l'application. Les avantages comprennent moins de copié les références et la capacité à échanger des implémentations plus facilement lors de l'exécution; pourrait même utiliser le Printemps ou l'autre CIO mécanisme.
merci beaucoup pour l'exemple. Lors de la recherche pour MVC je ne suis pas venu à travers cet exemple. Je vais le lire attentivement dès que possible. +1
OriginalL'auteur Will