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 :

[JTree] Redefinir dessin


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Par défaut [JTree] Redefinir dessin
    Bonjour, j aimerai utiliser une methode paint personnalisée pour
    mon JTree, comment puis je faire ca?

    merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    En quoi consiste ta personnalisation de ton JTree, parce qu'il y a plusieurs solution en fonction de ce que tu veux faire.
    Mais si tu veux rédéfinir complètement le dessin de ton JTree il faut que tu surcharge la méthode paint(Graphics g).

    Si tu veux juste redéfinir les labels, les icones ... passe par un TreeCellRenderer.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Par défaut
    je voudrais pouvoir dessiner (et redessiner) une ligne par dessus les cases de mon JTree.

    comment je fais pour surcharger ?

  4. #4
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    A mon avis, surcharger la méthode paint(Graphics g) du JTree est un enfer
    Je pense qu'il vaut mieux t'orienter vers le DefaultTreeCellRenderer, quitte à en redéfinir la méthode paint() (DefaultTreeCellRenderer est une extension de JLabel).
    Tu n'as pas un petit dessin pour comprendre ce que tu veux exactement comme rendu graphique ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Par défaut
    Ben en gros j ai mon Jtree, avec déja un affichage personnalisé.
    et par dessus, je voudrais pouvoir tracer des droites avec la souris.

    Ca fonctionne, seulement lorsque le Jtree rafraichit ca efface mon trait.

    Je pense que ce serait pas mal de refaire la méthode repaint

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void repaint()
    {
        paint();
        this.getGraphics.drawLine(x1,y1,x2,y2);
    }
    Comment je fais pour surcharger la méthode?

  6. #6
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Dans ce cas, ce n'est pas repaint() qu'il faut redéfinir mais paintComponent(). Fais qq chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected void paintComponent(Graphics g) {
      super.paintComponent(g);
      g.drawLine(x1, y1, x2, y2);
    }

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Par défaut
    ok merci je vais essayer ca de suite.

    Pour surcharger, je dois crée une nouvelle classe style myJTree,
    ou il y a une autre methode qui peut me permettre de modifier juste
    la fonction ?

  8. #8
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Oui, c'est ça, tu dois te créer une classe MyJTree héritée de JTree et tu redéfinis les méthodes qui t'intéressent.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Par défaut
    je n'arrive pas a instancier l'objet. Il me dit que y a pas de constructeur
    défini pour la classe MyJTree. J'ai essayé de caster mais y a un ClassCastException.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyJTree myTree = (MyJTree)new JTree(root);

  10. #10
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    as-tu définis un ou plusieurs constructeurs dans la classe MyJTree ?
    Tu dois plutôt écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyJTree myTree = new MyJTree(root);
    à condition que ce constructeur existe...

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Par défaut
    J ai bien essayé de créer un constructeur,
    mais le probleme est que je ne sais pas comment
    faire pour initialiser mon objet JTree.
    en gros, je dois mettre quoi dans mon constructeur pour qu'il se passe
    la meme chose que dans le constructeur du JTree.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Par défaut
    ok c'est bon j'ai trouvé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public MyJTree(MutableTreeNode node)
    {
          super(node);
    }
    merci
    je teste la suite.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Par défaut
    ca marche pas terrible ....
    ca clignote a fond et des que je change de ligne, ca rafraichit plu la ligne
    d'avant.

    Comment améliorer ca?

  14. #14
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Moi j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private JTree jTree1 = new JTree() {
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);
                g.drawLine(0, 0, 100, 100);
            }
        };
    et ça m'affiche bien une ligne au-dessus de l'arbre.

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Par défaut
    ca marche beaucoup mieux avec ta methode, merci.

    Par contre, le trait est dynamique (il suit la souris) et
    il disparait derriere certains éléments.
    Je vais chercher et je posterais quand j aurai bien ciblé le probleme.

  16. #16
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    J'arrive avec un train de retard mais c ou exactement que tu voulais placer un trait ?
    Au dessus de chaque Label de ton JTree?

  17. #17
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Micky1407 voulait bien tracer des droites par-dessus le JTree.

Discussions similaires

  1. [Graphic] Dessiner des hachures
    Par sylverspoon dans le forum 2D
    Réponses: 7
    Dernier message: 22/03/2006, 22h46
  2. [JTree] rafraichissement
    Par nurn dans le forum Composants
    Réponses: 12
    Dernier message: 29/07/2005, 15h41
  3. [JTree]redimensionnement d'un noeud
    Par grishka dans le forum Composants
    Réponses: 4
    Dernier message: 10/04/2003, 15h33
  4. [JTree] Ouvrir/Fermer l'ensemble des noeuds
    Par Math_Caen dans le forum Composants
    Réponses: 3
    Dernier message: 07/04/2003, 15h01
  5. Réponses: 3
    Dernier message: 12/06/2002, 20h03

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