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 :

[JTreeTable/JTable] getValueAt appelée nul part


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Par défaut [JTreeTable/JTable] getValueAt appelée nul part
    Bon, je me prends la tête depuis ce matin sur un problème lié aux JTreeTable/JTable. J'utilise la 2e version de Sun. Dedans, il y a une fonction getValueAt() dans la classe FileSystemModel2 qui permet de récupérer les valeurs à un endroit donné dans la table. Seulement mon problème, c'est que cette méthode n'est appelée nul part et qu'elle est pourtant utilisée. J'ai juste mis un affichage du mot test en console et celui-ci apparaît de nombreuses fois donc je suppose que cette fonction est appelée à chaque fois qu'il faut remplir une cellule du tableau. Mais ce qui me chagrine, c'est qu'elle n'est appelée nul part ; j'ai regardé toutes les classes et elle n'apparait que deux fois : une fois dans l'interface et une autre dans la classe qui implémente cette interface (et la classe FileSystemModel2 est une sous-classe de celle qui implémente).
    Donc je ne comprends pas ce qui se passe surtout que j'ai besoin de faire des tests sur des cellules spécifiques de ma JTreeTable et que le getValueAt se fait sur un node et une colonne et non pas une ligne et une colonne

  2. #2
    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
    Par défaut
    Aaaaah les JTreeTable... Que de bons souvenirs
    Qu'est ce que j'en ai ch*** là-dessus

    En fait quel est ton problème? Le fait que getValueAt() soit appelé ou le fait que tu veuilles te créer une méthode getValueAt() qui prenne en paramètre un numéro de ligne et de colonne au lieu d'un node et d'un colonne?

    Pour le 2ème problème, tu as normalement la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	public Object getValueAt(int row, int column) {
    		return treeTableModel.getValueAt(nodeForRow(row), column);
    	}
    dans la classe TreeTableModelAdapter.

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Par défaut
    Et bien tu as résumé parfaitement mes deux problèmes
    D'une part je ne comprends pas pourquoi getValueAt est appelée et d'autre part, j'ai trouvé la méthode dont tu ne parles mais je ne sais pas comment l'appeler (vu qu'il y a plusieur getValueAt de définies parmi les différentes classes).

  4. #4
    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
    Par défaut
    1) D'après ce que j'ai compris, la méthode getValueAt() est appelée à chaque fois que ton appli a besoin d'accéder au contenu de ta cellule : que ce soit un accés à une valeur, mais aussi pour un repaint (ce qui veut dire déplacement de colonne, sélection de ligne, et autre), etc...
    Du coup, c'est normal qu'elle soit appelée très souvent.

    2) Pour appeler la méthode getValueAt() du TreeTableModelAdapter, récupère le modèle de ta JTreeTable, caste-le en TreeTableModelAdapter et appelle ta méthode.
    Et normalement, le tour est joué

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Par défaut
    1) ok. Le seul truc, c'est que j'ai fait des colonnes avec des besoins spécifiques et le fait qu'il reload plein de fois, ça provoque une augmentation du temps d'affichage non négligeable. C'est pour ça que j'aimerais bien récupérer les valeurs à un endroit précis du tableau.

    2) Y'a un problème : le modèle de la JTreeTable est un FileSystemModel2 que je ne peux pas caster en TreeTableModelAdapter. Je ne peux que le caster en AbstractTreeTableModel et ce dernier, je ne peux pas non plus le caster en TreeTableModelAdapter donc je me retrouve à la situtation de départ.

  6. #6
    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
    Par défaut
    2) Rajoute cette méthode dans ton FileSystemModel2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        public Object getValueAt(int row, int column) {
    	return treeTableModel.getValueAt(nodeForRow(row), column);
        }
    1) J'avais le même problème
    Je calculais à chaque "refresh" toutes les donénes à afficher.
    En fait, il faut que tu stockes toutes les données à afficher dans ta classe FileNode (ou la classe correspondant dans ton appli).
    Comme ça, tu ne calcules les données qu'une seule fois, et tu ne fais qu'y accéder lors des appels à getValueAt()

    Moi, ça m'a fait gagner un temps fou au niveau du rafraîchissement et du parcours de ma table.

Discussions similaires

  1. un envoi de mail PHP qui ne marche PRESQUE nul part
    Par laurentSc dans le forum Langage
    Réponses: 15
    Dernier message: 02/05/2011, 19h09
  2. segfault sorti de nul part
    Par nocta dans le forum Débuter
    Réponses: 9
    Dernier message: 13/10/2010, 10h43
  3. Problème d'événements sortis de nul part
    Par coldrink dans le forum SDL
    Réponses: 1
    Dernier message: 23/05/2009, 19h25
  4. problème JTable getValueAt(int,int)
    Par trin86 dans le forum Composants
    Réponses: 8
    Dernier message: 16/02/2009, 20h29
  5. Réponses: 3
    Dernier message: 29/05/2008, 19h58

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