IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

[Conception] Découpage d'une interface graphique ?


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Points : 327
    Points
    327
    Par défaut [Conception] Découpage d'une interface graphique ?
    Bon(jour|soir),

    Voilà je tente de développer une interface graphique relativement conséquente, et j'aimerais savoir quel est le découpage "d'usage" dans ce genre de développement. En effet je prévois quelque chose qui ressemblerait au schéma ci-dessous :



    et je me dis que si je fais tout d'un seul block, ça va donner des milliers de lignes et ce ne sera pas lisible du tout pour un futur développeur. J'aimerais donc quelques conseil pour effectuer un découpage propre et cohérent.

    A savoir que tous les éléments du JTree sur la gauche sont sélectionnables, et que cette sélection doit entraîner la mise à jour des informations des panels sur la droite. Il faut donc maintenir un lien entre le selectedItem du JTree et l'ensemble des panels et composants associés ... et là, pour moi, c'est le drame :p

    Voilà merci de me donner des pistes/conseils

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    et je me dis que si je fais tout d'un seul block, ça va donner des milliers de lignes
    Ca m'etonne qu'il interface aussi legere face dans le millier de lignes
    D'ailleur le "tout d'un bloc"... ca ne ressemble pas du tout a de l'objet.


    voila comment je separerais :

    - une classe la fenetre et le menu
    - une classe (extends jpanel) par onglet
    - une classe pour gerer le jtree
    - une classe ecouteur sur le jtree qui modifit les panneaux
    Et certainement d'autres pour traiter les actions... mais vu que je ne sais pas ce que ca fait, je ne sais pas lequelles.

    Mais le "design" ressemble beaucoup à ce que propose les plateformes de developpement ... si ton programme est volumineux et modulaire ca peut etre interessant.

  3. #3
    Membre régulier Avatar de kerinel
    Profil pro
    Inscrit en
    Février 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 103
    Points : 107
    Points
    107
    Par défaut
    Bonjour,
    sur la page des tutos Java tu trouveras tous les composants dont tu auras besoin . donc en fait tu va avoir seulement besoin de quelques lignes de codes pour agencer tout ça: la barre de menu toute prête, le JTabbedPane....
    Pour le Panel associé a chaque onglet, n'hésite pas a écrire une méthode privée pour remplir chacun des Panels (voir faire une classe spécifique si c'est gros qui hérite de JPanel).
    Pour les éléments sur le JTree sélectionnables et la mise à jour, il y a les évènements. Tout est la

    Bon code
    kerinel

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Points : 327
    Points
    327
    Par défaut
    Merci de vos réponses. Evidemment il s'agit d'un schéma, les onglets ont en fait des sous-onglets pour identifier des sous-section. Il s'agit de modifier les infos contenu dans les objets représenté par mon JTree. Si je dis plusieurs milliers de lignes, c'est parce que j'ai fais quelques tests avec Matisse (NetBeans) et que j'ai déjà 1000+ lignes en ayant fait un seul onglet principal ... (bon ok le grouplayout y est pour beaucoup :p)


    Au niveau de la classe Listener pour le JTree, elle fera appel à mes méthodes de mise à jour des composants graphique, mais comment garder le lien avec toutes les classes qui hérites de JPanel ? Garder une référence vers la fenêtre principale qui contient elle-même des références vers les JPanel ?

    Bizarrement je n'ai quasiment rencontré aucun problème pour développer toute la partie Objets métiers/Modèle/"Contrôleur" mais je me perd totalement au niveau de la vue ...

  5. #5
    Membre régulier Avatar de kerinel
    Profil pro
    Inscrit en
    Février 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 103
    Points : 107
    Points
    107
    Par défaut
    Bonjour,
    Il est évident que le nombre de ligne de code dépendra beaucoup de la compléxité de chaque onglet.

    Est-ce que tu pourrais en dire plus sur ce que tu veux car c'est pas tres clair:
    lorsque tu cliques sur un Noeud, que doit-il se passer ? Tu affiches des informations correspondant à l'élément sélectionné ?
    Dans ce cas ton noeud n'est que l'une des représentations d'un élément sous jacent non ?
    Du coup je ferai en sorte que ce soit cet élément qui implément TreeSelectionListener pour le raccorder à "son" noeud.
    D'autre part les différents JPanel peuvent implémenter une Interface personnalisée pour recevoir les informations à afficher via un évènement personnalisé. Et chaque JPanel est enregistré auprès de tes éléments sous jacent.
    Lorsque tu cliques sur un noeud, tu informes ton élément qu'il est sélectionné (Il écoute le noeud). Ton élément crée alors un nouvel évènement personnalisé contenant les différentes informations qui lui sont particulières et l'envoie au JPanel(qui écoute ton élément). Le JPanel reçoit l'évènement et en retire les informations pour mettre à jour les différents champs.

    Bon code,
    kerinel

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Points : 327
    Points
    327
    Par défaut
    Merci, c'est de plus en plus clair pour moi

    Effectivement on commençant à coder mes panels j'ai vite senti le besoin de créer une interface afin de toujours avoir les méthodes paintLabels() pour l'internationalisation et updateFields() pour mettre à jour les valeurs des différents composants représentant les donnée de l'objet sélectionné dans le JTree.

    En fait dans mon JTree j'ai une liste de configurations, et lorsque je clique sur l'une d'entre elles, mes champs dans les onglets doivent prendre les valeurs de cette config. Par contre une fois un champ modifié je peux appliquer le changement soit uniquement sur la configuration sélectionnée, soit sur toutes les configurations du même groupe (oui elle seront en groupes). C'est pourquoi je penses que c'est les listeners sur mes boutons "appliquer" et "appliquer au groupe" qui effectueront les changements sur la configuration, et qui lanceront par exemple un événement qui mettra à jour tous les champs.
    Je pourrais aussi mettre cet événement sur chaque changement de ma configuration mais lors d'un "appliquer" il peut y avoir plusieurs modifications (autant que de champs sur l'onglet en question en fait) et donc ça provoquerais la mise à jour de tous les champs à plusieurs reprise => lourd ?!

    Bref dans tous les cas il faut que j'utilise des événements, ce qui revient au design pattern Observer/Observable n'est-ce pas ?

Discussions similaires

  1. Réponses: 7
    Dernier message: 06/07/2010, 19h06
  2. conception d'une interface graphique
    Par lucky31 dans le forum JBuilder
    Réponses: 11
    Dernier message: 04/06/2007, 05h48
  3. [C / Ada] Faire une interface graphique
    Par Casp dans le forum Ada
    Réponses: 6
    Dernier message: 15/04/2005, 15h06
  4. [RECHERCHE] un module pour developer une interface graphique
    Par romtrash dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 10/03/2005, 15h46
  5. comment fonctionne une interface graphique???
    Par elekis dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 27/10/2004, 23h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo