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 :

[design][swing] design pour property panel réutilisable


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut [design][swing] design pour property panel réutilisable
    Bonjour,

    J'aimerais créér un panel de propriétés réutilisable et customizable dans plusieurs projets Java. Je n'ai pas envie d'utiliser ce qui existe dans les librairies existantes car je prend ceci comme un exercice.

    Ce que je cherche c'est la manière d'arriver à ce résultat. Je n'ai jamais créé de composants custom, mais j'imagine qu'il faudrait pour commencer avoir un composant qui hérite de JPanel, et utiliser un layout de grille. Ensuite il faudrait à ma nouvelle classe des fonctions "addComponent(JLabel, SwingComponent)" qui me rajouterais un élément dans le panel de propriétés. Je pourrais ainsi facilement rajouter par exemple une ComboBox de couleur dans ce composant.

    Mais pour ensuite accéder à ces composants, comment faire pour avoir un moyen simple et générique de leur associer des fonctions qui se déclenchent après un évènement de touche clavier etc,...

    L'idée que j'ai serait que dès que l'on modifie un des objets dans le panel de propriété il modifie une classe qui représente l'état de tout ces objets.

    Mais comment créér cette classe,... une classe est quelque chose de statique mais la création de mon panel de propriété est dynamique,... je ne peux donc pas connaitre à la compilation toutes les propriétés qui existerons dans cette classe,...

    J'ai l'impression que je ne suis pas sur la bonne route,...

  2. #2
    Membre habitué Avatar de dr00w
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 116
    Points : 136
    Points
    136
    Par défaut
    Tu pourrais regarder le source du composant L2FProd disponible ici : http://common.l2fprod.com/

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut
    merci beaucoup mais j'aimerais justement éviter de faire du reverse eengeniring , cela prend du temps et je ne suis même pas sur qu'après tout ces efforts design ce que je trouverai sera bon. Je préferrerais plutôt avoir vos avis sur ce que j'ai proposé ainsi que vos idées d'amélioration ou savoir comment vous le feriez.

  4. #4
    Membre habitué Avatar de dr00w
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 116
    Points : 136
    Points
    136
    Par défaut
    Quelques pistes :

    - utiliser la réflection pour obtenir les propriétées d'une classe et leurs types
    - charger les propriétées et leurs valeurs dans une map
    - afficher dans une JTable sous 2 colonnes avec des "Custom cell renderers" selon le type
    - modifier le source de la classe pour ajouter les valeurs modifiées

    Il faudrait probablement mettre des "tags" dans le source afin de "parser" tes modifications...

    Selon les fonctionnalitées dont tu as besoin ça peu être un projet assez long, sans compter que tu réinvente la roue :-) Mais bon, ça peu aussi être amusant et instructif !

    Bonne chance !

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut
    yep c'est pour ça que je veux le faire, pour mieux connaitre le JAVA et cela par la pratique.

    merci pour ces réponses rapides

    par contre j'ai pas tout compris ,...

    la reflection je viens de voir sur google, ok, donc avec cet outil je peux obtenir le type de tout les objets se trouvant dans ma JTable, puis je peux sauvegarder les propriétés et types dans une map (tu veux sans dire une classe de type TreeMap, etc,...). Cela devrait me permettre de sauvegarder l'état de mes propriétés à un moment donné. Par contre tout les objets auront des propriétés différentes, et donc cela demanderait pleins de ifs pour déterminer le type de l'objet et en fonction sauvegarder les propriétés dans la map non ?

    et en fait je capte pas trop la dernière partie, modifier le source de la classe et aussi les tags pour parser.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut
    petite précision, ce n'est pas les propriétés d'une classe que je veux afficher dans le pannel de propriétés, mais plutôt des propriétés d'objets 3D

  7. #7
    Membre habitué Avatar de dr00w
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 116
    Points : 136
    Points
    136
    Par défaut
    Citation Envoyé par mlequim
    ...
    la reflection je viens de voir sur google, ok, donc avec cet outil je peux obtenir le type de tout les objets se trouvant dans ma JTable, puis je peux sauvegarder les propriétés et types dans une map (tu veux sans dire une classe de type TreeMap, etc,...).
    HashMap ou TreeMap (selon que tu veux ça trié ou pas)
    Cela devrait me permettre de sauvegarder l'état de mes propriétés à un moment donné. Par contre tout les objets auront des propriétés différentes, et donc cela demanderait pleins de ifs pour déterminer le type de l'objet et en fonction sauvegarder les propriétés dans la map non ?
    C'est la partie amusante du processus

    En fait tu enregistres les types dans ta map et tu affiche dans la JTable avec ton cell renderer.

    et en fait je capte pas trop la dernière partie, modifier le source de la classe et aussi les tags pour parser.
    Tout dépends de ce que tu veux faire avec ton éditeur. Si c'est pour être utilisé en mode design, tu devras générer/modifier le source de la classe ou utiliser un fichier externe (propriétées ou xml). Si c'est utilisable en runtime, tu devras enregistrer tes valeurs quelques part dans un fichier externe ou même dans une base de données. Y a plein de possibilités !

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut
    ok je crois que je vois bien comment faire le début maintenant !

    Tout dépends de ce que tu veux faire avec ton éditeur. Si c'est pour être utilisé en mode design, tu devras générer/modifier le source de la classe ou utiliser un fichier externe (propriétées ou xml). Si c'est utilisable en runtime, tu devras enregistrer tes valeurs quelques part dans un fichier externe ou même dans une base de données. Y a plein de possibilités !
    En fait les propriétés de mes objets seront toujours du même type, je ne compte pas au runtime permettre de changer les panels de propriétés. Je cherche juste à avoir un composant réutilisable. Quand tu dis modifier le source de la classe du veux dire statiquement ? donc faire de la génération de code ? Je suis pas contre l'idée mais si tu as plus simple je prend

    Sinon en fait, maintenant que j'y pense, plutôt que d'avoir une classe qui sauve les objets créé à partir du panel, on pourait faire la démarche inverse. Donc créér une classe avec des propriétés de type String, int, etc,... et ensuite grâve à la réflection créér le panel avec des objets approprié aux types rencontrés dans la classe qui stokera les propriétés.

    Hum,... zut, j'aurais pas du penser à ça, maintenant j'ai deux solutions, ... laquelle choisir lol !

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/05/2008, 16h03
  2. Réponses: 6
    Dernier message: 10/08/2007, 13h38
  3. Designer (développement OS pour console)
    Par darklez dans le forum Autres
    Réponses: 0
    Dernier message: 08/08/2007, 16h06
  4. [swing] JScroolBar pour les panels
    Par khayri dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 22/04/2006, 10h53
  5. [C#][Designer] Méthode executée dans property en DesignMode
    Par backseatgreg dans le forum Windows Forms
    Réponses: 5
    Dernier message: 03/01/2006, 11h00

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