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:

  1. 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)
  2. 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?
  3. 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
  4. 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?
  5. 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...
  6. 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?
  7. 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.

  8. 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?
  9. 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