Java Swing: séparer le composant de l'interface utilisateur du comportement logique - comment abordez-vous?

StackOverflow https://stackoverflow.com/questions/2220648

Question

Ce que je fais, dans NetBeans par exemple:

  • créer une classe de composant d'interface utilisateur, suffixé par type de composant Swing, par exemple JPanel, par exemple, MyUIWidgetJPanel
  • créer une classe logique / comportement à manipuler le comportement / logique, à savoir ce qui se passe lorsque le composant d'interface utilisateur est utilisée, par exemple, boutons dans la enfoncée, etc., MyUIWidgetLogic

I peuvent également lier des composants / logique ensemble à l'aide des références, si le comportement / résultat d'une influence de composantes / impacts autre, par exemple certaines options affichées ne sont plus pertinentes, ou pour donner des options sensibles au contexte.

Que pensez-vous de cela? Bien? Bad?

Que faites-vous?

Était-ce utile?

La solution

J'ai tendance à utiliser le Présentation Modèle Motif .

Pour l'essentiel, il semble être ce que vous faites: créer une classe qui comprend la logique, distincte à la classe de l'interface utilisateur. Les classes de l'interface utilisateur ne doivent pas contenir une logique -. Seul le code nécessaire pour afficher l'interface

Vous pouvez lier vos valeurs de fin avant la classe de modèle de présentation back-end en utilisant quelque chose comme

Autres conseils

Je trouve cet article Comment écrire swing de composants personnalisés utiles comme un exemple de plomberie délégué UI.

Filthy Rich Clients par Chet Haase et Romain Guy est largement recommandé pour obtenir des conseils sur visuellement riches applications clientes.

Comme composants Swing communiquent en utilisant des événements via le fil de répartition de l'événement, vous fournirez généralement mises en œuvre ActionListener aux éléments qui vous intéressent (comme un JButton). Ce sont ces implémentations ActionListener qui contiennent la logique, mais gardez à l'esprit que si vous ne l'utilisez pas le filetage, votre élément d'interface utilisateur (comme le JButton) ne sera pas réactif alors que votre ActionListener fait quelques calculs et la détention du contrôle.

Ce que vous décrivez est un modèle de conception MVC appelé (Model View Controller) Il est pas l'unanimité, mais il est le moyen le plus populaire de séparer les préoccupations dans une interface graphique. Il assure également que lorsque vous avez plusieurs représentations (vues) des mêmes données (modèle), vous pouvez être sûr que tous sont mis à jour lorsque les données changent. La partie de contrôleur de MVC prend soin de dire la userinterface quelles parties doivent être activées (entre autres).

http://en.wikipedia.org / wiki / Modèle% E2% 80% 93view% E2% 80% 93controller

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top