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 :

Soucis avec JXTreeTable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Par défaut Soucis avec JXTreeTable
    Salut à tous!
    Je souhaiterais faire un JTree avec plusieurs colonnes, j'ai effectué quelques recherches et j'ai choisi le JXTreeTable.

    Les exemples sont peu nombreux et pas fastosh à comprendre

    Je ne comprend pas pourquoi un JXTreeTable prend en paramètre un DefaultTreeTableModel qui lui même prend en paramètre un DefaultMutableTreeTableNode qui lui même prend un seul parametre : un String ( ouf)

    Donc ma question est la suivante,comment remplir les autres colonnes?

    merci d'avance!

    PS je me suis basé sur cet exemple : http://jroller.com/jrapp/resource/TestTreeTable.java et qui (à moins que je n'ai fait une erreur de manip) ne permet pas de modifier...

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Sauf que le DefaultTreeTableNode ne prends pas un String en paramètre du constructeur mais un Objet, ce qui n'est pas vraiment la même chose.
    Pour avoir quelque chose d'utilisablke dans une treetable, il faut partir d'une classe héritant d'AbstractMutableTreeTableNode et implémentant les méthodes requises. Le DefaultMutableTreeTableNode n'est qu'un exemple d'implémentation vraiment simpliste.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Par défaut
    Bonjour,merci pour ta reponse

    mais si je met mon objet en parametre(objet qui est composé de 3 attributs) il va m'afficher une sorte de référence dans la premiere colonne de la table.
    Comment lui dire que je veux l'attribut 1 dans la première colonne,l'attribut 2 dans la seconde et le 3 dans la 3eme?

    merci

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    C'est à ça que sert la méthode abstraite getValueAt(int column) héritée d'AbstractMutableTreeTableNode (enfin dans les faits elle est définie dans nl'interface TreeTableNode) que tu dois redéfinir. Cette méthode permet à la JXTreeTable de savoir où aller chercher la colonne n dans le node.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Par défaut
    A d'accord,merci!
    Pour ceux que ça pourrait intérésser voici le code de getValue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    public Object getValueAt(Object node, int column) {
            	 Object res = "";
                    if (node instanceof DefaultMutableTreeTableNode) {
                	   	DefaultMutableTreeTableNode defNode = (DefaultMutableTreeTableNode) node;
                        if (defNode.getUserObject() instanceof Liste) {
                                Liste list = (Liste) defNode.getUserObject();
                                switch (column) {
                                case NOM:
                                        res =list.getNom();
                                        break;
                                case PLAQUETTES:
                                        res = list.getPlaquettes();
                                        break;
                                case DIVERS:
                                        res = list.getDivers();
                                        break;
                                }
                        }
                }
     
     
                return res;
        }
    J'ai un dernier petit soucis
    Ma colonne NOM affiche la référence de la Liste (tabTree.Liste@05az5r5)
    une idée d'ou cela peut venir?
    merci en tout cas

  6. #6
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Citation Envoyé par sinok Voir le message
    Sauf que le DefaultTreeTableNode ne prends pas un String en paramètre du constructeur mais un Objet, ce qui n'est pas vraiment la même chose.
    Pour avoir quelque chose d'utilisable dans une treetable, il faut partir d'une classe héritant d'AbstractMutableTreeTableNode et implémentant les méthodes requises. Le DefaultMutableTreeTableNode n'est qu'un exemple d'implémentation vraiment simpliste.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Par défaut
    Escuse moi,je viens d'éditer ma réponse précédente...
    Comme je disais tout semble fonctionner,mis a part la premiere colonne sur laquelle il m'affiche la référence

  8. #8
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il te faut redéfinir le TreeCellRederer de la JXTable pour qu'il soit capable d'afficher la valeur de ton objet que tu veux afficher.

    Sinon tu peux éventuellement redéfinir le toString de ton objet ça devrait marcher également mais c'est pas franchement propre comparé au renderer.

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Par défaut
    OK OK
    La redefinition de DefaultMutableTreeTableNode c'est un peu trop haut comme niveau pour moi

    Donc j'ai fait comme tu as dis, en redefinissant toString().
    Je me doute bien que c'est pas terrible

    Mais bon ça fera l'affaire

    Merci pour ton aide

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

Discussions similaires

  1. quelques soucis avec word 2000
    Par ramchou dans le forum Word
    Réponses: 3
    Dernier message: 06/09/2004, 18h13
  2. SOucis avec une reequete imbriquee
    Par Ni4k dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/03/2004, 08h56
  3. souci avec un algorithme
    Par slider16 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/03/2004, 17h17
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52
  5. Réponses: 4
    Dernier message: 16/02/2003, 12h16

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