JEditor : synchroniser la méthode setPage() et getText()

Résolu
soucygab Messages postés 5 Date d'inscription dimanche 7 février 2010 Statut Membre Dernière intervention 10 février 2010 - 8 févr. 2010 à 07:14
soucygab Messages postés 5 Date d'inscription dimanche 7 février 2010 Statut Membre Dernière intervention 10 février 2010 - 9 févr. 2010 à 06:49
Bonjour,
Dans la séquence setPage(unUrl) suivit de getText() provenant de la class JEditorPane, getText() est appelé avant que la page soit téléchargé, ainsi je me retrouve avec à avoir une page vide lors de l'appelle de getText(). Je dois poser un verrou par exemple sur le document, je ne comprends pas comment synchroniser tout ceci, une tentative:

synchronized(this.Document){
setPage(unUrl)
System.out.print(getText());

}
ne fonctionne pas du tout.
Merci beaucoup!

2 réponses

soucygab Messages postés 5 Date d'inscription dimanche 7 février 2010 Statut Membre Dernière intervention 10 février 2010
9 févr. 2010 à 06:49
Alors, j'y répond moi même, la méthode setPage() se crée un Document à partir du EditorKit avec la méthode createDefaultDocument(), en lui précissant text/html elle travaille avec HTMLEditorKit, ainsi c'est à ce niveau que l'on synchronise avec setAsynchronousLoadPriority(-1). Il suffit alors de se crée notre propre HTMLEditorKit, on ajoute la méthode qu'utilisera setPage(), c-a-d createDefaultDocument que l'on synchronise
public Document createDefaultDocument(){
     HTMLDocument docu = (HTMLDocument)(super.createDefaultDocument());
     docu.setAsynchronousLoadPriority(-1); 
     return docu;
} 


on doit alors utiliser la méthode
setEditorKitForContentType( "text/html", new VotreEditorKitSync() );


le tour est joué!
3
soucygab Messages postés 5 Date d'inscription dimanche 7 février 2010 Statut Membre Dernière intervention 10 février 2010
8 févr. 2010 à 07:34
désoler, il faut lire plutôt synchronized( this.getDocument() )
0