JEditorPane : update...

Signaler
Messages postés
500
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
11 juillet 2007
-
Messages postés
500
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
11 juillet 2007
-
Salut a tous,


La je seche vraiment, alors si quelqu'un a une solution, je suis preneur.


Le contexte du Pb:


Dans mon appli, je fais un fichier log en HTML,


que je souhaite visionner dans un JEditorPane.


Jusqu'ici tout va bien...


Sauf que ce fichier de log change...


Et que du coup, je met le tout dans un thread, qui fait un
setPage(monURL) regulierement... et la surprise, si l'URL ne change
pas, il ne fait pas d'update..


en passant par un setdocument(monHTMLDocument), je perd la mise en forme html, beurk!


La solution(degeulasse) c'est de faire un


setDocument(new HTMLDocument());


setPage(monURL);


mais la ca clignote, c'est plutot moyen..


Si quelqu'un a mieux, je suis preneur.





Le code:








private JFrame getInfoDialog(String title, String path){


filePath = path;


final JFrame dial = new JFrame(title);


dial.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);


_htmlPane = new JEditorPane();


_htmlPane.setEditable(false);


_htmlPane.setContentType("html");


JScrollPane editorScrollPane = new JScrollPane(_htmlPane);


editorScrollPane.setVerticalScrollBarPolicy(


JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);


editorScrollPane.setPreferredSize(new Dimension(500, 300));


editorScrollPane.setMinimumSize(new Dimension(10, 10));


dial.getContentPane().setLayout(new BorderLayout());


dial.getContentPane().add(editorScrollPane, BorderLayout.CENTER);


dial.pack();


//read datas


new Utils.SwingWorker() {


public Object construct() {


while (dial != null && dial.isVisible()){


try {


Thread.sleep(1000);


}


catch (InterruptedException ex1) }


try {


_url = new java.net.URL("file:" + filePath);


updateHtmlDocument0(); //pas de refresh...



// updateHtmlDocument1(); //clignote.



// updateHtmlDocument2(); //pas de mise en forme


}


catch (Exception ex) {


_htmlPane.setText("Couldn't find : " + filePath);


}


// }


return "";


}


}.start();


return dial;


}





private void updateHtmlDocument0 () throws Exception {


_htmlPane.setPage(_url);



// _htmlPane.setPage(new URL("file:" +filePath)); //idem




// _htmlPane.setPage(new File(filePath).toURL); //idem


}





private void updateHtmlDocument1() throws Exception {



_htmlPane.setDocument(new HTMLDocument());



_htmlPane.setPage(_url);



}





private void updateHtmlDocument2() throws Exception{



HTMLDocument doc = new HTMLDocument();



InputStream stream = _url.openStream();



_htmlPane.getEditorKit().read(stream, doc, 0);



_htmlPane.setDocument(doc);



}


-------------------
dams
-------------------

2 réponses

Messages postés
237
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
11 juillet 2006

Si ca clignote c'est que ca vient de ton thread.
As-tu essaye de changer ton timer?

cid019
Messages postés
500
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
11 juillet 2007

Hum, je sais, mais de toute facon, le setPage fais un update qui est visble, donc clignote...

-------------------
dams
-------------------