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/JTreeTable] getPathForRow : null ?


Sujet :

Composants Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Points : 64
    Points
    64
    Par défaut [JTree/JTreeTable] getPathForRow : null ?
    Bonjour,

    j'ai une JTreeTable et je souhaite obtenir une valeur d'une cellule donnée. J'utilise pour cela la methode getValueAt(int, int). Cette méthode fait elle-même appel à la méthode nodeForRow(int) qui permet de "convertir" un entier en noeud du JTree. Cependant cette méthode utilise getPathForRow qui me renvoie la valeur null. D'après la Javadoc, If row is not visible, null is returned. Qu'est ce que le visible sous-entend ? Car quand j'execute mon code, c'est cette partie qui pose problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected static Object nodeForRow(int row) {
        	TreePath treePath = tree.getPathForRow(row);
        	return treePath.getLastPathComponent();         
        }
    Merci pour votre aide.

  2. #2
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    qd tu utilises des jtables et jtree (je suppose que c'es la meme chose pour des jtreetable) tu peux tres bien avoir des données presentent dans le model de donnée que tu ne veux pas afficher.
    Je pense que la javadoc fait reference a ces données la : existante dans le model mais pas dans la vue .

  3. #3
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Je pense que ça doit venir du fait que tu as certains noeuds repliés...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Points : 64
    Points
    64
    Par défaut
    Je n'ai pas de valeurs non insérées et j'ai fait un expandAll parceque j'ai justement besoin que tous les noeuds ne soient dépliés.

    Ce qui m'étonne, c'est qu'en prenant une version plus vieille de la JTreeTable, je n'ai pas ce problème.

  5. #5
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    quelle est la valeur de row quand ça crashe?
    combien as-tu de lignes dans ta table?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Points : 64
    Points
    64
    Par défaut
    Dès que mon numero de ligne devient supérieur à 0 ça crashe

    Je viens de reprendre la première version des JTreeTable et je peux utiliser getValueAt() sans problème dans cette version donc je pense que je vais utiliser celle là. Par contre, je suis toujours autant perdu avec les setValueAt(), je ne parviens pas à modifier mes valeurs dans la JTreeTable

  7. #7
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    n'oublie pas le fireTableDataChanged() (ou fireTableStructureChanged()) de ton model après toute modif de tes données...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Points : 64
    Points
    64
    Par défaut
    Je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TreeTableModelAdapter modele = (TreeTableModelAdapter)treeTable.getModel();
    	treeTable.setValueAt("test", 2, 4);
    	modele.fireTableDataChanged();
    J'ai egalement fait avec modele.setValueAt(...) et ça ne change pas mes valeurs Je crois que je ne suis pas très loin mais je rate un truc.

  9. #9
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    essaie ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fireTableCellUpdated(int row, int column)
    ou ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fireTableStructureChanged()

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Points : 64
    Points
    64
    Par défaut
    Ca ne change rien

  11. #11
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    rassures-moi, tu as bien redéfini la méthode setValueAt()?
    Et elle fait bien ce que tu veux qu'elle fasse?

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Points : 64
    Points
    64
    Par défaut
    Et bien, vu que je fais mon setValueAt() sur mon modele (j'ai mis la treeTable aussi dans mon post avant mais j'utilise le modele) et que du coup, il utilise le setValueAt défini dans TreeTableModelAdapter, je ne l'ai pas redéfini.
    Et si je dois le faire, alors je ne comprends pas pourquoi je dois le faire.

  13. #13
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    La méthode setValueAt() de TTMA appelle celle de TreeTableModel qui elle... est vide...

    Du coup, tu dois créer ton propre model qui doit étendre AbstractTreeTableModel et dans lequel tu surcharges cette méthode et où tu définis toutes les données que tu veux stocker.

    Ou alors, en redéfinissant la méthode setValueAt() de TTMA si ce modèle contient tout ce que tu désires (ça doit sûrement marcher je pense)

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Points : 64
    Points
    64
    Par défaut
    Très bien, je vois mon erreur !

    Merci pour toutes ces explications

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

Discussions similaires

  1. JTree - DefaultMutableTreeNode - GetParent NULL !
    Par Mattgic dans le forum Composants
    Réponses: 1
    Dernier message: 03/10/2010, 00h32
  2. [JTree] Null Pointer Exception
    Par Caxton dans le forum Débuter
    Réponses: 5
    Dernier message: 08/08/2010, 15h28
  3. Java Swing : JTree & Path = NULL
    Par ZeeGoo dans le forum Composants
    Réponses: 1
    Dernier message: 22/03/2008, 12h07
  4. JTree expanded dans une JTreeTable
    Par Tygrou dans le forum Composants
    Réponses: 2
    Dernier message: 26/06/2007, 15h05
  5. [Swing] recharger jtree dans JtreeTable
    Par piro dans le forum Composants
    Réponses: 2
    Dernier message: 10/03/2006, 12h48

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