JEditorPane : update...

dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007 - 2 févr. 2005 à 10:53
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007 - 8 févr. 2005 à 13:08
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
-------------------
A voir également:

2 réponses

cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
8 févr. 2005 à 12:25
Si ca clignote c'est que ca vient de ton thread.
As-tu essaye de changer ton timer?

cid019
0
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
8 févr. 2005 à 13:08
Hum, je sais, mais de toute facon, le setPage fais un update qui est visble, donc clignote...

-------------------
dams
-------------------
0
Rejoignez-nous