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

EDT/SwingWorker Java Discussion :

[MaJ] Thread et join() : le programme stoppe completement


Sujet :

EDT/SwingWorker Java

  1. #21
    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 bosse dessus justement
    Mon problème pour le moment, c'est la mise à jour des valeurs dans la JTreeTable via la fonction setValueAt(). Je mets bien à jour mes valeurs dans mon modele mais il n'existe pas de fireTableCellUpdated() ou assimilé pour dire à ma JTreeTable que les données ont changé. Les seules méthodes dispo sont sur le fait que le JTree a changé (fireTreeNodesInserted, fireTreeNodesRemoved, fireTreeStructureChanged, ...). Après recherches sur le net, j'ai trouvé ce post où ils ont une solution mais je ne la comprends pas : http://saloon.javaranch.com/cgi-bin/...c&f=2&t=009761
    (la partie userObject est assez obscure pour moi et je pense que c'est lié avec les setName, setEnabled qu'on voit après mais je n'en suis pas sûr).

  2. #22
    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
    Bon, j'ai compris ce qu'ils font dans l'exemple au-dessus mais ça n'est pas adaptable pour moi
    Et je deviens désespéré car je ne trouve pas comment implémenter la methode fireTableCellUpdated() et sans elle, je ne crois pas que je puisse dire à ma JTreeTable que les données ont changé

  3. #23
    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
    Moi sur ma JTreeTable, j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ttma.fireTableStructureChanged();
    lorsque je veux ajouter des colonnes à ma table. (où ttma est mon TreeTableModelAdapter)

    Et je fais aussi du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    treeTable.updateUI();
    treeTable.repaint();
    lorsque je supprime un de mes noeuds.

  4. #24
    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 mais y'a un truc qui m'échappe : pourquoi quand je fais TreeTableModelAdapter.fireTableCellUpdated(row, column); dans ma méthode setValueAt(row, column) qui est non statique, j'ai une erreur Cannot make a static reference to the non-static method fireTableCellUpdated(int, int) from AbstractTableModel ?

  5. #25
    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
    Parce que fireTableCellUpdated() n'est pas une méthode statique et que tu l'appelles comme telle...

  6. #26
    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
    Zut oO Je ne savais pas ça :/
    C'est parceque je l'ai écrit avec TreeTableModelAdapter devant ? Et si c'est le cas, pour pouvoir l'utiliser en non statique, que dois-je faire ?

  7. #27
    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
    L'appeler avec le nom de ta variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tonTreeTableModelAdapter.fireTableCellUpdated();
    Et si le nom de ta variable c'est "TreeTableModelAdapter", tu comprends pourquoi il ne faut jamais faire commencer ses noms de variable par une majuscule

  8. #28
    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
    Bon, question bête mais je crois que je suis au bout de mes souffrances : je suis dans ma classe FileSystemModel et dans ma méthode setValueAt(). Sur quelle variable je dois utiliser la methode ? Je suppose qu'il faut qu'elle soit liée au TreeTableModelAdapter mais dans ma classe en question, je ne vois pas laquelle je peux utiliser :/

  9. #29
    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
    Appelle-la sur le modèle de ta JTreeTable que tu auras préalablement casté en TTMA...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((TreeTableModelAdapter) taJTreeTable.getModel()).fire...();
    A toi de voir où tu dois de voir où tu dois placer cette ligne...

  10. #30
    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
    Mais nooooooooooooooon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void setValueAt(Object value, int row, int column){
        	ArrayList ligne = (ArrayList)valeurs2D.get(row);
        	System.out.println("allez on y croit");
        	ligne.set(column, value);
        	TreeTableModelAdapter treeTableModelAdapter = (TreeTableModelAdapter) TreeTableExample0.treeTable.getModel();
        	treeTableModelAdapter.fireTableDataChanged();
        }
    Je stocke mes données dans un ArrayList (pas fait de tableau car je ne sais pas combien j'ai d'éléments). Là, a priori, ça devrait donc etre bon. J'ai mis aussi toutes mes colonnes editables et ça c'est bon. Mais quand je change une valeur dans mon tableau, il ne la prend pas en compte Et mon "allez on y croit" n'apparait pas Je comprends plus

  11. #31
    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
    Dans quelle classe as-tu défini cette méthode?

  12. #32
    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
    FileSystemModel (qui etend AbstractTreeTabelModel)

  13. #33
    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
    Et tu crées ta JTreeTable avec ce FileSystemModel que tu castes en TreeTableModelAdapter dans le constructeur de JTreeTable?

    Si c'est le cas, je ne vois pas trop pourquoi ça ne amrche pas...
    Tu n'as pas surcharger d'autres méthodes setValueAt(), par hasard? Style celle de TreeTableModel ou autre...

    Correction : ta méthode doit avoir cet entête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void setValueAt(Object aValue, Object node, int column) {

  14. #34
    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
    Citation Envoyé par seiryujay
    Correction : ta méthode doit avoir cet entête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void setValueAt(Object aValue, Object node, int column) {
    Oui c'est ce que je me suis rendu compte et ce que j'étais en train de faire et ça me semble tout à fait ça. Juste quelques peaufinages et ça devrait rentrer dans l'ordre.
    Je retourne à mon code, la motivation revient !

  15. #35
    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
    J'étais pareil quand je bossais sur ce composant...
    Content de voir que ça sert à quelque chose, et que j'ai pas tout oublié

  16. #36
    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
    Enfin ! Ca marche, je peux editer une cellule et conserver mes changements Je pense que le plus dur est passé car je pourrai mettre mes valeurs à jour ensuite (après avoir exécuté le calcul dans mon thread, tout ça)

    Merci pour toute l'aide, je mettrai le Résolu quand j' en aurai totalement terminé.

  17. #37
    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'hésite pas si t'as d'autres soucis.

  18. #38
    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
    Que dire ? Ca marche
    Tout fonctionne, des JTreeTable editables aux calculs dans mes Threads avec PopUp et mise à jour via invokeLater dans la JTreeTable. Bref, je suis content, j'ai appris plein de choses dans l'affaire et en plus ça marche

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 14
    Dernier message: 04/06/2007, 22h43
  2. [Threads Win32]join et queue
    Par NiamorH dans le forum Windows
    Réponses: 2
    Dernier message: 03/04/2007, 11h48
  3. Réponses: 2
    Dernier message: 06/03/2007, 11h07
  4. [Débutant] [Thread] Faire patienter un programme java....
    Par yoxx dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 25/09/2005, 12h36
  5. [Thread] Blocage dans mon programme
    Par Xo Sonic oX dans le forum EDT/SwingWorker
    Réponses: 4
    Dernier message: 18/06/2005, 17h12

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