Bonsoir,

J'ai un JTreeTable.
Je créé un objet, je l'affecte à un noeud et j'ajoute ce noeud au model.
J'envoie ensuite un fireChildAdded pour signaler l'ajout et rafraîchir l'affichage du JTreeTable.

Mon problème c'est que la création de l'objet prend du temps et freeze l'edt un certain temps.
Une solution serait de mettre la création de l'objet et l'ajout dans le JTreeTable dans un thread.


Pour plus de précision, l'objet en question est un SwingWorker qui effectue un téléchargement d'album photo Picasa.
Avant de débuter le téléchargement, je veux afficher la taille de l'album.
Donc dans la création du téléchargement, le téléchargement se connecte à Picasa et demande la taille puis créé des téléchargements de photos. Ces opérations prennent du temps et je ne peux les faire dans doInBackground car j'ai besoin d'afficher les tailles des photos et de l'album dès leur ajout dans le JTreeTable.

Le code de la méthode du TreeTableModel pour l'ajout de téléchargement :
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
24
    public void addWebAlbum(File directory, WebAlbum album) throws WebServiceException, ResourceNotFoundException{
 
        //Création du WebAlbumDownload3. Cette opération prend du temps l'objet se connecte au service Picasa pour
	//connaître la taille de l'album. Il créé aussi les WebPhotoDownload correspondant aux téléchargements de photos
        WebAlbumDownload3 wad = new WebAlbumDownload3(album, new File("/home/charles/Bureau/TTTEST/"), allowedConnections);
        //Création du noeud correspondant
        WebAlbumDownloadTreeTableNode2 newAlbumNode = new WebAlbumDownloadTreeTableNode2(this, wad);
	//Insertion dans le JTreeTable
        rootNode.insert(newAlbumNode, rootNode.getChildCount());
        TreePath newAlbumNodeParentTreePath = new TreePath(newAlbumNode.getParent());
	//On signale l'ajout
        this.modelSupport.fireChildAdded(newAlbumNodeParentTreePath, rootNode.getChildCount() - 1, newAlbumNode);
 
        //Ajout des WebPhotoDownload dans l'arbre
        TreePath newAlbumNodeTreePath = new TreePath(newAlbumNode);
        for(WebPhotoDownload3 wpd : wad.getWebPhotoDownloads()){
            WebPhotoDownloadTreeTableNode2 newPhotoNode = new WebPhotoDownloadTreeTableNode2(this, wpd);
            newAlbumNode.insert(newPhotoNode, newAlbumNode.getChildCount());
            this.modelSupport.fireChildAdded(newAlbumNodeTreePath, newAlbumNode.getChildCount() - 1, newPhotoNode);
        }
 
        //Démarrage du téléchargement
        wad.execute();
    }

La question que je me pose est la suivante :
Si je place l'ensemble du contenu de cette méthode dans un thread, est-ce que les modifications de l'affichage provoquées par fireChildAdded seront effectuées dans l'EDT ou est-ce qu'elle seront effectuées dans le thread ?

Merci pour vos réponses !

(P-S : j'ai pas l'impression que je suis super clair, je pourrai reformuler quand je serai réveillé si besoin ^^)