6
votes

Structure du programme Java Swing

Je recherche des conseils sur les meilleures pratiques pour une application utilisant Java Swing pour être structuré. Je suis un gars WebApp normalement et j'essaie de suivre MVC. MVC est-il typique des applications swing? Si oui, comment?


0 commentaires

4 Réponses :


4
votes

Suite MVC est une très bonne idée. Autant que je sache, il n'y a pas de cadre de swing Java formel qui fait cela, ils se concentrent tous sur l'aspect "View" du problème.

En ce qui concerne l'application de l'application et MVC - le meilleur cadre que je connaisse est Griffon. Ce n'est pas Java - c'est groovy, mais c'est ce qui le rend plus attrayant et assez facile à apprendre. Griffon à une application Swing est la même que les greils à une application Web.

Vérifiez-le à http://griffon.codehaus.org/


5 commentaires

En fait, ces jours-ci, Griffon est plus java que Groovy (au moins dans sa mise en œuvre). Il vous permet d'écrire une application avec Groovy ou Java ou même les deux en même temps.


J'attends en fait un soutien complet (génération de code aussi) de Scala. Ce serait vraiment gentil. Je pensais que tu travaillais sur quelque chose comme ça :)


C'est déjà là. Installez l'archétype Scala et vous êtes en affaires. Griffon Install-arachType http://svn.codehaus.org/griffon/archetypes/scala/trunk/scala / scala-griffon-arche type.zip Griffon Create-App Sample - archétype = scala méfiez-vous que le mode applet n'est pas encore pris en charge. Vous trouverez que vous pouvez écrire n'importe quel artefact Griffon (modèle, vue, contrôleur, service) avec SCALA. Vous pouvez même utiliser Scala-balançant des vues.


J'abandonne essayer d'appliquer le formatage en commémoratifs. C'est tellement bouché.


C'est une nouvelle impressionnante!



0
votes

Swing a une configuration relativement bonne pour une architecture MVC, mais elle combine vraiment la vue et le contrôleur. Les composants en swing peuvent avoir des auditeurs attachés à ceux-ci, qui correspond à l'aspect du contrôleur, puis à partir de ces auditeurs (qui sont dans les composants), vous pouvez modifier la vue et le modèle en conséquence. Donc, pour répondre à votre question, oui, Swing aiderait à une approche MVC dans une application Java.

in Swing, vous avez toujours deux pièces distinctes pour VC: composants et auditeurs. La raison pour laquelle je dis leur combinaison est parce que chaque composant peut avoir son propre auditeur respectif. Ces auditeurs font généralement la manipulation et sont l'aspect du contrôleur. Les composants sont conçus pour non seulement être visualisés à l'écran, mais également transmettre des informations à ces auditeurs. Les appuie sur les boutons, les coups de touches, les modifications de mise au point, la fermeture de la fenêtre, etc. sont tous rapportés aux auditeurs du composant respectif par le composant. Voici un simple essai de code pour un bouton avec un auditeur d'action, qui enregistre une touche appuyez sur la touche Press. P>

ActionListener buttonListener = new ActionListener() {
    public void actionPerformed(ActionEvent event) {
        // Controller code
    }
};

JButton button = new JButton("A Button");
button.addActionListener(buttonListener);


2 commentaires

Je ne pense pas que les auditeurs soient des contrôleurs. Ils peuvent simplement être utilisés dans un contrôleur pour répondre aux événements des composants.


C'est ce que je voulais dire. En termes de MVC, ils ne sont pas, mais ils peuvent être considérés de cette façon. Les contrôleurs prennent l'entrée et modifient le modèle. Les auditeurs peuvent ne pas nécessairement prendre l'entrée, mais ils peuvent certainement être utilisés pour manipuler le modèle et, comme cela concerne certaines interprétations de MVC, modifiez la vue. Tout dépend de la partie des responsabilités du contrôleur que vous souhaitez mettre plus de poids.



2
votes

Vous pouvez trouver ce très simple exemple et discussion utile.


0 commentaires

0
votes

Il y avait une JSR (296) qui décrit un cadre pour la construction de Gui swing, mais on dirait que cela a été oublié, consultez l'article suivant:

http://java.dzone.com/news/jsr-296 -end-jframe

J'ai trouvé les cadres suivants, basés initialement, qui semblent prometteurs:


1 commentaires

Il y a aussi ceci (mais il a l'air dormant) - Github.com/hamnis/saff