2010-04-20 4 views
4

Je crée une application de bureau SWT autonome qui a environ 10 écrans différents (quelques assistants, aide, formulaires, etc.). Certains éléments à l'écran ne changent pas du tout (comme l'en-tête, l'arrière-plan, etc.) et il y a une zone de travail qui change en fonction de ce qui est cliqué, etc.Quelle est la meilleure façon de gérer les écrans d'application dans SWT?

Quelle est la meilleure façon de gérer les écrans d'application? Ai-je besoin de créer tout l'écran au démarrage, puis de les afficher/masquer en fonction de ce qui est cliqué? Ou dois-je créer ces écrans dynamiquement?

Aussi, je ne pouvais pas trouver un moyen d'afficher/cacher un Composite, dois-je dispose et puis créer à nouveau?

Quelle est la meilleure pratique? Je suis nouveau à SWT développement en dehors d'Eclipse donc toute aide serait bénéfique.

Répondre

5

La décision de créer des écrans l'avant ou les créer la première fois qu'ils ont besoin d'être affichée est une décision qui doit être fait sur une base par application. S'il y a de bonnes chances que tous les écrans aient besoin d'être utilisés sur une application particulière et que le nombre d'écrans soit faible (10 écrans est relativement faible), vous pouvez les créer au démarrage de l'application afin que l'interface utilisateur soit snappier une fois l'application chargée.

Si vous utilisez des liaisons, vous devrez peut-être venir avec une stratégie de Éliminez (même si vous déposez uniquement les liaisons) de sorte que vous n'avez pas trop d'événements qui volent autour.

Control a une méthode (et Composite hérite de Control) setVisible (Boolean) que vous pouvez utiliser pour afficher et masquer un composant. Notez que cela empêchera uniquement l'affichage du composite à l'écran, le gestionnaire de disposition lui allouera toujours un espace vide. De nombreuses mises en page SWT ont un moyen d'exclure un contrôle de la mise en page qui va se débarrasser de l'espace vide. Par exemple, si vous utilisez GridLayout, vous devez définir la variable exclude sur votre objet GridData sur true lorsque vous masquez ce contrôle.

Une autre option est d'utiliser stackLayout. Cela vous permet d'empiler un tas de composites les uns sur les autres, puis de choisir lequel est en haut. Cela pourrait être un bon ajustement pour vous si vous avez des zones statiques et une zone de travail comme vous l'avez décrit. Je mettrais l'en-tête, le pied de page et un composite vide avec un StackLayout dans un fichier de classe. Je mettrais alors chaque écran qui sera affiché dans la zone de travail dans leurs propres classes. Vous pouvez faire en sorte que ces classes d'écran étendent Composite, puis se définissent dans le constructeur ou vous pouvez utiliser une méthode usine pour configurer l'écran. L'une ou l'autre est une pratique commune et acceptable et se résume à une question de goût.

+0

Excellente réponse. Je vous remercie! – parxier

+0

Je n'ai trouvé que 'java.awt.CardLayout'. Ne fait-il pas partie de la série SWT standard? – parxier

+1

Désolé, mon erreur, c'est StackLayout dans SWT. – rancidfishbreath

Questions connexes