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

Composants Java Discussion :

Pour connaisseur de JComponent


Sujet :

Composants Java

  1. #1
    Membre habitué

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2020
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2020
    Messages : 167
    Points : 162
    Points
    162
    Par défaut Pour connaisseur de JComponent
    Bonjour à tous,

    sur mon interface, j'ai disposé des objets, qui deviendront des interrupteurs, que je lie entre eux, en créant des "objets fils", qui apparaissent en noir sur la capture d'écran:
    Nom : composants.png
Affichages : 130
Taille : 7,9 Ko

    Quand je créé un Fil de type "JComponent perso", je lui attribue tout d'abord, une dimension pour la zone de dessin.
    Comme le fil peut théoriquement couvrir une bonne partie de l'écran, la zone définie représente la totalité du panel du fond de couleur "Cyan".

    Les fils se superposent donc sans problème car ceux sont en fait des polylines, dont le reste de la surface de dessin est transparente.

    Les fils sont donc des couches pratiquement transparentes superposées, qui chacune, ne laisse voir que la polyline de son fil.

    La problèmatique est que, même si je mets un "Listener" sur les fils à la construction, pour interagir pendant l'utilisation, ces derniers ne sont pas utilisables.
    En effet, dès que je clique, seul le premier fil est "cliquable", car sa zone occupe en fait tout le fond d'écran couleur "Cyan" et les autres fils s'accumulent au-dessous de cette surface, au fur et à mesure.

    Questions :

    1/ Quelle astuce peut permettre d'éviter que le "Listener" s'applique à toute la surface réservée dans le "JComponent perso", mais uniquement à sa zone réellement porteuse d'un dessin, afin de pouvoir "Cliquer par transparence" sur les fils qui s'accumulent en dessous?

    2/ Si cette astuce n'existe pas, quelle approche adopter pour pouvoir accumuler des lignes un peu partout, qui peuvent se superposer, et tout de même , pouvoir les "cliquer" de manière indépendante??

    Cela est un peu technique et peu de gens ici auront la réponse ne semble-t-il, mais toutes les idées seront bienvenues!!

    Merci à tous...

  2. #2
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 325
    Points : 436
    Points
    436
    Par défaut
    Pour avoir fait plusieurs éditeurs graphiques, l'approche d'un JComponent par élément visuel c'est souvent avérée être la plus complexe.

    Dans les deux projets ayants eu le plus de succès, j'ai toujours fini par avoir un seul JComponent qui se charge de peindre tous les élements et de calculer lequel est cliqué. Le modèle MVC fonctionne très bien dans ce cas avec, souvent, un modèle propre à cette "vue" qui peint le tout.

  3. #3
    Membre habitué

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2020
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2020
    Messages : 167
    Points : 162
    Points
    162
    Par défaut modèle MVC à explorer
    Plutôt débutant, je ne connais pas le modèle MVC. Je vais donc explorer cette piste pour essayer ensuite d'adapter mon projet à cette approche nouvelle si j'en comprends le fonctionnement.

    Merci donc à gervais.b, et je reste ouvert à d'autres idées bien sur...

  4. #4
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 325
    Points : 436
    Points
    436
    Par défaut
    L'idée du MVC est simple, séparer le Modèle de la Vue et des Controles (actions). Vous trouverez facilement de la documentation sur le sujet.

    Souvent j'avais un modèle assez simple qui reprenait l'ensemble des "formes" à dessiner, c'est sur ce modèle que j'ajoutais ou supprimait une "forme". La vue (JComponent), responsable de tout dessiner, était abonné aux changements de ce modèle pour se redessiner à chaque changements.
    La vue était aussi responsable d'écouter la souris (et autres), de calculer quelle "forme" était impliquée et de prévenir le contrôleur des actions à faire.

    Mais étant donné que la vue travaille avec des coordonnées, elle travaillait avec un modèle privé plus adapté et optimisé (patterns adapteur et decorateur) composé du modèle simple.


    Le problème d'utiliser un composant par "forme" est qu'un composant reste un "rectangle" il faut donc y coder la logique de savoir si on à cliqué sur la "forme" ou pas. Et si pas, il faut déléguer a quelque chose d'autre qui va continuer jusqu’à ce qu'il trouve la "forme" ou rien du tout. Cette logique doit être écrite dans tous les cas mais dans le système que je vous propose il ne faut pas coder la délégation qui vous pousse souvent à exposer un peu plus que ce qui est "nécessaire".

  5. #5
    Membre habitué

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2020
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2020
    Messages : 167
    Points : 162
    Points
    162
    Par défaut identifier la forme cliquée
    bonjour gervais.b, merci pour vos suggestions.

    Je vais me documenter sur cette approche.

    A mes yeux, la difficulté principale reste le fait que le "click" se fera sur un "JComponent" global, et que le click doit être traité pour savoir si ce dernier correspond à la position d'un "JComposant perso" sur ce "JComponent global support".

    Retrouver d'après la position du clic , la forme de base traitée n'est pas encore clair dans mon esprit, mais ca viendra je pense...

    En tout cas, merci encore pour vos précisions!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pour connaisseur des évements "MouseEvent"
    Par patdu26 dans le forum EDT/SwingWorker
    Réponses: 1
    Dernier message: 10/11/2020, 09h20
  2. Pour connaisseur des TMEMO
    Par patdu26 dans le forum Delphi
    Réponses: 7
    Dernier message: 21/04/2020, 16h20
  3. Rech. connaisseur OSCommerce pour finalisation site
    Par repare31 dans le forum Autres
    Réponses: 0
    Dernier message: 28/12/2010, 15h11
  4. Probleme facile pour connaisseur
    Par The_Big_Lebowski dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/03/2009, 18h22
  5. pour les connaisseurs de mpi
    Par fatjoe dans le forum C++
    Réponses: 6
    Dernier message: 29/02/2008, 13h16

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