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

Résolu
Signaler
Messages postés
5
Date d'inscription
dimanche 7 février 2010
Statut
Membre
Dernière intervention
10 février 2010
-
Messages postés
5
Date d'inscription
dimanche 7 février 2010
Statut
Membre
Dernière intervention
10 février 2010
-
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

Messages postés
5
Date d'inscription
dimanche 7 février 2010
Statut
Membre
Dernière intervention
10 février 2010

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é!
Messages postés
5
Date d'inscription
dimanche 7 février 2010
Statut
Membre
Dernière intervention
10 février 2010

désoler, il faut lire plutôt synchronized( this.getDocument() )