2010-01-01 10 views
1

J'écris une application graphique que je veux utiliser Swing et SWT. L'utilisateur final spécifiera en quelque sorte ce qui doit être utilisé (il n'utilisera pas les deux en même temps!). SWT est ce que je préfère généralement et j'ai regardé JFace, mais il semble que si j'utilise ses fonctionnalités les plus puissantes, j'augmenterai le couplage entre l'interface graphique et le modèle, et rendra plus difficile l'abstraction de l'interface graphique. utilisé aussi bien.L'utilisation des visionneuses de JFace empêche-t-elle une bonne séparation MVC?

Est-ce le cas? Peut-on utiliser JFace sans attacher les détails de l'interface graphique dans le modèle ou vice-versa?

Répondre

2

Le seul couplage serré ici est le choix de l'implémentation réelle de l'afficheur (par exemple en utilisant TableViewer versus TreeViewer pour lier votre modèle à un widget Table ou Arbre de façon respectueuse).

Quant à votre première partie de l'tat de question que vous indique voulez pour une raison quelconque de découpler votre application à partir d'un choix de cadre GUI, je vous suggère de jeter un oeil à UFace project

projet UFace vise à fournir exactement ce que vous semblez viser - une seule implémentation de l'interface utilisateur qui peut fonctionner contre de nombreux backends GUI (il appelle fournisseurs):

UFace page du projet au moment de cette liste par écrit le soutien aux fournisseurs suivants:

  • JFace/SWT
  • swing
  • GWT

(J'ai aussi entendu des rumeurs de certains travaux effectués sur le soutien fournisseur Qt Jambi ainsi)

+0

Cela semble parfait! Je vous remercie! – ZoFreX

0

Vous ne pouvez pas basculer dynamiquement. JFace appelle SWT. Il ne peut pas être demandé d'appeler AWT à la place.

Comme si JFace couple le modèle à l'interface graphique, eh bien, non. Il a un ensemble d'interfaces de modèles, mais vous pouvez coller n'importe quel modèle que vous aimez. C'est à vous de le faire proprement si votre client veut la possibilité d'arracher JFace un jour. Pour ce que je sais, en utilisant JFace viewers ioffers assez bonne séparation de la vue et le modèle

+0

je dit que * I * veulent utiliser Swing et SWT, pas l'utilisateur final. Et c'est hors de la portée de la question, mais j'ai une bonne raison pour l'exigence. Je n'essaie pas d'appeler JFace Swing ou AWT à la place, je me demande simplement s'il est possible de créer une application MVC dont l'interface graphique est suffisamment séparée du modèle pour que je puisse la changer facilement (et le Approche MVC est comment on m'a dit ici pour faire cela), mais encore gagner des fonctionnalités plus puissantes de JFace? – ZoFreX

+0

Vous avez écrit: "L'utilisateur final spécifiera en quelque sorte ce qui doit être utilisé (il n'utilisera pas les deux en même temps!)." Apparemment, je ne sais pas ce que vous entendez par "utilisateur final". – bmargulies

+0

Je voulais dire que la fourniture de l'option entre SWT et Swing est une décision que j'ai prise. L'utilisateur final aura le choix de ce qui est utilisé lors de l'exécution. – ZoFreX