CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[JavaFX] Custom controls

Aldebran
Aldebran
Niveau 10
19 décembre 2014 à 23:44:18

Bonjour,

Je développe une petite interface en Java avec la bibliothèque JavaFX 8 donc l'objectif, en gros, est de fournir un outil de dessin pour des formes géométriques (notamment polylines, splines, etc.). Je me dis que pour chaque type de spline ce serait l'idéal de définir un contrôle graphique custom qui me permettrait de piloter les différents paramètres (points de contrôles, tangentes, etc.).

Je débute complètement avec JavaFX et je ne suis pas très au courant des bonnes pratiques, surtout que la documentation est encore assez légère sur internet (si l'on compare à Swing), et en plus je tente de respecter au maximum le pattern MVC et les principes de base de design logiciel. Du coup, je me demandais qu'elle était la meilleure façon de construire ces contrôles ?

A noter que je dispose déjà d'une bibliothèque fermée contenant ces différentes splines (sous forme de classes qui contiennent les attributs des splines).

Tout d'abord ce que je pensais faire, c'était définir une classe étendant Control (appelons-là SplineControl) qui contiendrait une référence à un objet Spline de la bibliothèque de splines, ainsi qu'une liste de propriétés identiques aux propriétés de ma spline (notamment les points de contrôle), avec des ChangeListener sur ces propriétés pour que chaque changement d'une de ces propriétés soit répercuté sur les attributs de l'objet Spline. Pour la partie graphique, je pensais implémenter l'interface Skin (classe SplineSkin) et retourner l'objet graphique à dessiner dans la méthode getNode(), ce skin devrait aussi être ChangeListener des propriétés de SplineControl afin de modifier les objets graphiques en conséquence. Déjà, est-ce que c'est la bonne façon de faire ?
De plus je me demandais où devait-être implémentée l'interaction avec l'utilisateur : par exemple, dans SplineSkin je dessine les points de contrôles de ma spline et je veux que ceux-ci puissent être draggés par l'utilisateur, où vaut-il mieux que ce comportement soit décrit ? Et si deux points de contrôles sont superposés, y-a-t-il quelque chose à faire pour qu'un seul des deux soit draggé ?

Pseudo supprimé
Pseudo supprimé 19 décembre 2014 à 23:51:53

C'est l'idée générale et le principe même du MVC, je préciserai aussi :

1] Commence par créer une interface "Handle" basée sur un composant graphique de base qui te permettra de capter les actions de l'utilisateur, une poignée, quoi.
2] Implémente des poignées avec des contraintes particulières (range, distance, path, etc)
3] Écrit un décorateur pour chaque primitive que tu souhaites dynamiser qui utilisera les poignées pour transformer les actions de l'utilisateur en modifications des primitives.

Le décorateur ne doit être qu'un binding de déplacement de poignées vers les paramètres de tes primitives graphiques.

TL;DR : Utilise le pattern decorator pour ajouter des poignées à contraintes aux objets que tu veux dynamiser, tu détaches ainsi complètement la primitive de son système de modification.

Message édité le 19 décembre 2014 à 23:54:23 par Pseudo supprimé
Aldebran
Aldebran
Niveau 10
21 décembre 2014 à 08:49:12

OK, donc niveau design logiciel j'avais l'air plutôt bien parti :)

D'un point de vue plus technique, pour le Handle, dois-je étendre la classe BehaviorBase (ou BehaviorSkinBase ?) de JavaFX ou est-ce que ce n'est pas conseillé ?

Ensuite, est-ce une bonne idée de créer un sous-contrôle permettant de gérer individuellement les points de contrôle de la spline, et qui sera utilisé par mon contrôle permettant d'afficher la spline et de lui ajouter des points de contrôle ?

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment