Java/Swing GUI meilleures pratiques (à partir d'un code de point de vue)
Comme contraste à ce wiki, je suis à la recherche de la bonne façon de mettre en œuvre Swing contrôles d'interface utilisateur graphique à partir d'un codage point de vue.
J'ai été dans une quête pour apprendre Java et de ses outils d'interface graphique, mais j'ai trouver un tutoriel après internet tutoriel qui jette tout dans main
et je sais que ce n'est pas juste.
J'ai aussi essayé de RAD comme les systèmes de Netbeans et autres "visuel" des éditeurs, mais par moment j'arrive à le codage, j'ai un tas de code que je ne connais pas la moitié de ce qu'il fait, donc je suis à l'intention de l'apprentissage à la main le code de swing, et je sais que les contrôles de base et la mise en page, mais que vous voulez faire de la bonne façon.
Est-il un modèle standard ou je suis absent?
exemple des questions...
puis-je prolonger la JFrame et de créer mon propre image de l'objet? (Je suppose que oui)
dois-je encapsuler le menu principal à l'intérieur du cadre de l'objet? ou dois-je créer ses propres? etc...
Comment je me sépare d'une "Vue" de la logique de "l'Application" de la logique?
En gros, je suis à la recherche de ce que les normes de l'industrie, sur la façon d'organiser le code de la GUI.
- Cela appartient à Programmeurs SE... où j' posée il déjà.
- Je dois dire que je suis en désaccord, comme je l'ai fais une demande pour le codage des exemples précis. L'occasion pour les non-subjective des réponses. Les programmeurs y a de plus subjectif, de la profession de questions connexes. Cependant, je ne l'apprécie votre information et regarder par-dessus la réponse à votre question.
- Eh bien, vous devriez probablement vous dire explicitement, alors... vous voulez dire que vous voulez des réponses pour la les trois choses que vous énumérés sous la rubrique "questions"?
- bien sûr, pour commencer, je vais modifier pour essayer de me faire plus clair.
- Vous vous posez la question subjective de l'aide. Il n'y a pas de "standard de l'industrie sur l'organisation de code" parce que c'est comme demander pour le "véritable dérivation d'une intégrale" ... compte tenu de "l'intégrale x^2" je veux que vous pour la dériver et je veux que vous sachiez que ma constante est [omis], mais je ne vais pas vous dire ce que ma constante est. ~ (mon point de vue) la programmation est comme ça. Il y a beaucoup de façons d'atteindre le même résultat final. Donc, ce que les "meilleures pratiques" pour ma boutique peuvent ne pas être les "meilleures pratiques" pour votre boutique. Et comme pour "internet des tutoriels bâton tout en
main
" c'est parce qu'ils vont pour le plus rapide d'entrée pour le code. - BTW, je doute qu'il y est un "standard de l'industrie" pour l'organisation de code de la GUI. J'ai travaillé dans beaucoup d'endroits différents et ad hoc semble être la plus standard de la manière de gérer le code de la GUI. Ce qui signifie, que, normalement, pas beaucoup de réflexion est donné à tous.
Vous devez vous connecter pour publier un commentaire.
Puisqu'il semble être un argument à propos de ce qui constitue les "meilleures pratiques", je vais vous donner ce que j'ai trouvé qui fonctionne le mieux pour moi, et mon raisonnement:
1.
Chaque fenêtre doit s'étendre soit JFrame ou JDialog (selon le type de fenêtre). Cela rend plus facile de contrôler les propriétés de la fenêtre, sans spécification d'un objet spécifique à chaque fois. Ce n'est plus le cas général, même si, comme j'ai été connu pour faire dans les deux sens.
2.
Le
main()
méthode doit être dans une classe à part. Cela augmente la probabilité d'être en mesure d'utiliser votre fenêtre classes d'ailleurs, car ils ne sont pas liés à des implémentations spécifiques. Techniquement, il n'est pas de faire une différence, mais au démarrage de l'application du code n'a pas sa place dans une fenêtre.3.
Les auditeurs devraient être dans les classes internes anonymes. Votre haut-niveau de la classe ne doit pas mettre en œuvre tous les auditeurs. Cela empêche les hacks comme appeler les méthodes d'écoute de tout sauf de l'objet auquel ils sont attachés.
Ici est une application simple avec une seule image afin de démontrer ces pratiques:
Je suis d'accord avec tous de Jonathan points.
Je tiens également à ajouter les éléments suivants:
4.) Utiliser le GridBagLayout (GBL) est judicieuse. GBL est un puissant Gestionnaire de configuration, difficile à apprendre, mais très puissant.
5.) Envisager de codage à la main tous votre INTERFACE utilisateur. Personnellement, je suis pas un fan de code qui est produite par les éditeurs visuels. Mais, avec cela dit je n'ai pas utilisé un éditeur visuel dans plusieurs années. Ils ont peut-être mieux à ce point.
6.) Utiliser des JPanels judicieusement. Regardez votre interface utilisateur et de déterminer les éléments qui devraient se comporter de la même que la taille de l'écran change et puis regrouper ces composants ensemble sur un Composite. Envisager d'utiliser des JPanels à l'intérieur des JPanels pour obtenir votre mot de redimensionnement de comportement.
J'ai l'habitude de prendre une approche légèrement différente sur mes composants gérer les événements alors Jonathan n', mais je crois que son approche est un peu plus propre puis de la mine.
Aussi, vraiment de l'étude de l'utilisation de MVC et de l'Architecture en Couches. Il est vraiment préférable de ne pas mélanger de l'INTERFACE utilisateur et la Logique Métier ensemble.